#1239 - When Transaction.setSkipCache(true) ... Query with useQueryCache is still use L2 query cache

This commit is contained in:
Rob Bygrave
2018-01-19 10:46:49 +13:00
parent 13ddb915c8
commit 0a809b0fb3
5 changed files with 73 additions and 18 deletions
@@ -0,0 +1,53 @@
package org.tests.transaction;
import io.ebean.BaseTestCase;
import io.ebean.CacheMode;
import io.ebean.Ebean;
import io.ebean.Transaction;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
import org.tests.model.basic.Customer;
import org.tests.model.basic.ResetBasicData;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class TestTransactionSkipCache extends BaseTestCase {
private void findUseQueryCache() {
Ebean.find(Customer.class)
.setUseQueryCache(true)
.setBeanCacheMode(CacheMode.PUT)
.where().startsWith("name", "Rob")
.findList();
}
private void setup() {
ResetBasicData.reset();
// load into L2 query cache
findUseQueryCache();
}
@Test
public void skipL2QueryCache() {
setup();
Transaction transaction = Ebean.beginTransaction();
try {
transaction.setSkipCache(true);
LoggedSqlCollector.start();
findUseQueryCache();
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).as("We didn't use the L2 query cache").hasSize(1);
} finally {
transaction.end();
}
}
}