From f13de2c8a6b62d8a2835edae559ac8a9f3f37f19 Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Fri, 13 Jul 2018 19:57:56 +0200 Subject: [PATCH 1/2] ADD: Testcase for delete with cache --- .../org/tests/delete/TestDeleteByQuery.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/test/java/org/tests/delete/TestDeleteByQuery.java b/src/test/java/org/tests/delete/TestDeleteByQuery.java index 47c1c7ff8..e19bdf821 100644 --- a/src/test/java/org/tests/delete/TestDeleteByQuery.java +++ b/src/test/java/org/tests/delete/TestDeleteByQuery.java @@ -9,6 +9,7 @@ import io.ebean.annotation.Platform; import org.tests.model.basic.BBookmarkUser; import org.tests.model.basic.Contact; +import org.tests.model.basic.Country; import org.tests.model.basic.Customer; import org.tests.model.basic.ResetBasicData; import org.ebeantest.LoggedSqlCollector; @@ -170,4 +171,22 @@ public class TestDeleteByQuery extends BaseTestCase { Contact contactFind = Ebean.find(Contact.class, contact.getId()); assertThat(contactFind).isNull(); } + + @Test + public void deleteByPredicateCached() { + + Country country = new Country(); + country.setCode("XX"); + country.setName("SecretName"); + Ebean.save(country); + Query query = Ebean.find(Country.class).where().eq("name", "SecretName").setUseQueryCache(true); + + assertThat(query.findList()).hasSize(1); + assertThat(query.findCount()).isEqualTo(1); + + Ebean.find(Country.class).where().eq("name", "SecretName").delete(); + //Ebean.getDefaultServer().getPluginApi().getBeanType(Country.class).clearQueryCache(); + assertThat(query.findList()).hasSize(0); + assertThat(query.findCount()).isEqualTo(0); + } } From 74c88ce5119e59cbe5d0a4810d9781a4aadf67d5 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Sun, 15 Jul 2018 14:13:29 +1200 Subject: [PATCH 2/2] #1452 Fix - Deleting a bean does not invalidate the bean cache (Regression from 11.18.1 - introduced by changes in #1427) --- .../io/ebeaninternal/server/deploy/BeanDescriptorCacheHelp.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorCacheHelp.java b/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorCacheHelp.java index 3066e14b4..ee602ab74 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorCacheHelp.java +++ b/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorCacheHelp.java @@ -739,6 +739,7 @@ final class BeanDescriptorCacheHelp { if (invalidateQueryCache) { changeSet.addInvalidate(desc); } else { + queryCacheClear(changeSet); if (beanCache != null) { changeSet.addBeanRemoveMany(desc, ids); }