From a2ce17aec07ff6b64f9f5d4e0c8d682f95ed51ab Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Fri, 30 Nov 2018 22:42:36 +1300 Subject: [PATCH] Add test only - Add test for L2 cache with orphanRemoval --- .../tests/model/orphanremoval/OrpMaster.java | 7 +++- .../orphanremoval/TestOrphanRemoveO2M.java | 41 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/tests/model/orphanremoval/OrpMaster.java b/src/test/java/org/tests/model/orphanremoval/OrpMaster.java index 8801d87f7..c21761c0b 100644 --- a/src/test/java/org/tests/model/orphanremoval/OrpMaster.java +++ b/src/test/java/org/tests/model/orphanremoval/OrpMaster.java @@ -1,12 +1,16 @@ package org.tests.model.orphanremoval; +import io.ebean.annotation.Cache; + import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.Id; +import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Version; import java.util.List; +@Cache @Entity public class OrpMaster { @@ -15,7 +19,8 @@ public class OrpMaster { String name; - @OneToMany(orphanRemoval = true, cascade = CascadeType.ALL) + @OneToMany(orphanRemoval = true, cascade = CascadeType.ALL)//, mappedBy = "master") + @JoinColumn(name = "master_id", referencedColumnName = "id") List details; @Version diff --git a/src/test/java/org/tests/model/orphanremoval/TestOrphanRemoveO2M.java b/src/test/java/org/tests/model/orphanremoval/TestOrphanRemoveO2M.java index b0c52a12b..87685c910 100644 --- a/src/test/java/org/tests/model/orphanremoval/TestOrphanRemoveO2M.java +++ b/src/test/java/org/tests/model/orphanremoval/TestOrphanRemoveO2M.java @@ -33,4 +33,45 @@ public class TestOrphanRemoveO2M extends BaseTestCase { assertThat(sql).hasSize(2); assertThat(sql.get(0)).contains("delete from orp_detail where id=?"); } + + @Test + public void testCacheUse() { + + // add test data first + OrpMaster m0 = new OrpMaster("m2", "master2"); + m0.getDetails().add(new OrpDetail("d21", "d1")); + m0.getDetails().add(new OrpDetail("d22", "d2")); + + Ebean.save(m0); + + OrpMaster m1 = Ebean.find(OrpMaster.class, "m2"); + + m1.getDetails().clear(); + m1.getDetails().add(new OrpDetail("d23", "d3")); + Ebean.save(m1); + + m1 = Ebean.find(OrpMaster.class, "m2"); + // Expect only one. + assertThat(m1.getDetails()).hasSize(1); + assertThat(m1.getDetails()).extracting("id").containsExactly("d23"); + + m1.getDetails().clear(); + m1.getDetails().add(new OrpDetail("d24", "d4")); + m1.getDetails().add(new OrpDetail("d25", "d5")); + Ebean.save(m1); + + m1 = Ebean.find(OrpMaster.class, "m2"); + assertThat(m1.getDetails()).hasSize(2); + assertThat(m1.getDetails()).extracting("id").containsExactly("d24", "d25"); + + + m1 = Ebean.find(OrpMaster.class) + .setId("m2") + .setUseCache(false) + .findOne(); + + // Expect only one. + assertThat(m1.getDetails()).hasSize(2); + assertThat(m1.getDetails()).extracting("id").containsExactly("d24", "d25"); + } }