diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java index acb3e1708..b0fcd7f17 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java @@ -396,7 +396,7 @@ final class CQueryBuilder { sql = nativeQueryPaging(query, sql); } query.setGeneratedSql(sql); - Connection connection = request.transaction().connection(); + Connection connection = request.transaction().getInternalConnection(); BeanDescriptor desc = request.descriptor(); try { // For SqlServer we need either "selectMethod=cursor" in the connection string or fetch explicitly a cursorable diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactory.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactory.java index ea2bc8aa0..cf8f4591b 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactory.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactory.java @@ -35,7 +35,7 @@ abstract class TransactionFactory { */ final SpiTransaction setIsolationLevel(SpiTransaction t, boolean explicit, int isolationLevel) { if (isolationLevel > -1) { - Connection connection = t.connection(); + Connection connection = t.getInternalConnection(); try { connection.setTransactionIsolation(isolationLevel); } catch (SQLException e) { diff --git a/ebean-test/src/test/java/org/tests/cache/TestQueryCache.java b/ebean-test/src/test/java/org/tests/cache/TestQueryCache.java index 6e254ea6c..e11585d4b 100644 --- a/ebean-test/src/test/java/org/tests/cache/TestQueryCache.java +++ b/ebean-test/src/test/java/org/tests/cache/TestQueryCache.java @@ -3,6 +3,8 @@ package org.tests.cache; import io.ebean.CacheMode; import io.ebean.DB; import io.ebean.ExpressionList; +import io.ebean.annotation.Transactional; +import io.ebean.annotation.TxIsolation; import io.ebean.bean.BeanCollection; import io.ebean.cache.ServerCache; import io.ebean.test.LoggedSql; @@ -159,6 +161,30 @@ public class TestQueryCache extends BaseTestCase { assertThat(count2).isEqualTo(count1); sql = LoggedSql.stop(); assertThat(sql).hasSize(1); + + + LoggedSql.start(); + findCountNoTxn(); + sql = LoggedSql.stop(); + assertThat(sql).hasSize(0); + + LoggedSql.start(); + findCountTxn(); + sql = LoggedSql.stop(); + assertThat(sql).hasSize(0); + } + + private void findCountNoTxn() { + DB.find(EColAB.class) + .setUseQueryCache(CacheMode.ON) + .where() + .eq("columnB", "count") + .findCount(); + } + + @Transactional(isolation = TxIsolation.READ_UNCOMMITTED) + private void findCountTxn() { + findCountNoTxn(); } @Test