Files
ebean/ebean-test/src/test/java/org/tests/basic/TestQueryUsingConnection.java
T

87 lines
2.1 KiB
Java

package org.tests.basic;
import io.ebean.xtest.BaseTestCase;
import io.ebean.DB;
import io.ebean.Transaction;
import io.ebean.xtest.IgnorePlatform;
import io.ebean.annotation.Platform;
import org.junit.jupiter.api.Test;
import org.tests.model.basic.Country;
import org.tests.model.basic.ResetBasicData;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class TestQueryUsingConnection extends BaseTestCase {
@Test
public void usingConnection() throws SQLException {
ResetBasicData.reset();
DataSource dataSource = DB.getDefault().dataSource();
try (Connection connection = dataSource.getConnection()) {
int count = DB.find(Country.class)
.usingConnection(connection)
.findCount();
assertThat(count).isGreaterThan(0);
}
}
@IgnorePlatform({Platform.SQLSERVER, Platform.COCKROACH})
@Test
public void usingTransaction() {
ResetBasicData.reset();
try (Transaction transaction = DB.createTransaction()) {
Transaction current = Transaction.current();
assertThat(current).isNull();
Country x = new Country();
x.setCode("xx");
x.setName("WillRollThisBack");
DB.getDefault().insert(x, transaction);
final CountryDto dto = DB.findDto(CountryDto.class, "select code, name from o_country where code=?")
.usingTransaction(transaction)
.setParameter(1, "xx")
.findOne();
assertThat(dto).isNotNull();
assertEquals("xx", dto.code);
assertEquals("WillRollThisBack", dto.name);
final int count = DB.find(Country.class)
.usingTransaction(transaction)
.findCount();
final int otherCount = DB.find(Country.class).findCount();
transaction.rollback();
assertThat(count).isEqualTo(otherCount + 1);
}
}
public static class CountryDto {
final String code;
final String name;
public CountryDto(String code, String name) {
this.code = code;
this.name = name;
}
}
}