From f93a45734fb27f675128b32531c9a97b0d7338ac Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Thu, 17 Jul 2025 15:48:15 +0200 Subject: [PATCH] Non-working modify-tracking in certain cases --- .../org/tests/cascade/TestOrderedList.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/ebean-test/src/test/java/org/tests/cascade/TestOrderedList.java b/ebean-test/src/test/java/org/tests/cascade/TestOrderedList.java index cdbb39b383..34a75475f6 100644 --- a/ebean-test/src/test/java/org/tests/cascade/TestOrderedList.java +++ b/ebean-test/src/test/java/org/tests/cascade/TestOrderedList.java @@ -1,9 +1,14 @@ package org.tests.cascade; +import io.ebean.bean.BeanCollection; import io.ebean.xtest.BaseTestCase; import io.ebean.DB; import io.ebean.test.LoggedSql; import org.junit.jupiter.api.Test; +import org.tests.model.basic.Order; +import org.tests.model.basic.OrderDetail; +import org.tests.model.basic.Section; +import org.tests.model.basic.SubSection; import java.util.Collections; import java.util.List; @@ -149,6 +154,48 @@ public void testModifyList() { } + @Test + public void testModifyListenModeSet1() { + final OmOrderedMaster master = new OmOrderedMaster("Master"); + final OmOrderedDetail detail1 = new OmOrderedDetail("Detail1"); + DB.save(detail1); + DB.save(master); + + master.getDetails().add(detail1); + System.out.println(((BeanCollection) master.getDetails()).modifyListening()); // ALL + + DB.save(master); + + master.getDetails().clear(); + + DB.save(master); + + OmOrderedMaster masterDb = DB.find(OmOrderedMaster.class, master.getId()); + assertThat(masterDb.getDetails()).isEmpty(); + + } + + @Test + public void testModifyListenModeSet2() { + final Section master = new Section(); + final SubSection detail1 = new SubSection(); + DB.save(detail1); + DB.save(master); + + master.getSubSections().add(detail1); + System.out.println(((BeanCollection) master.getSubSections()).modifyListening()); // null + + DB.save(master); + + master.getSubSections().clear(); + + DB.save(master); + + Section masterDb = DB.find(Section.class, master.getId()); + assertThat(masterDb.getSubSections()).isEmpty(); + + } + @Test public void testModifyListWithCache() { final OmCacheOrderedMaster master = new OmCacheOrderedMaster("Master");