This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push: new 28a6aa594 CAY-2851 Replace Existing OneToOne From New Object 28a6aa594 is described below commit 28a6aa594efcc6b717f30ab4c602ab72074cb9d2 Author: Nikita Timofeev <stari...@gmail.com> AuthorDate: Wed Jun 12 12:21:15 2024 +0400 CAY-2851 Replace Existing OneToOne From New Object --- .../java/org/apache/cayenne/CDOOne2ManyIT.java | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java index 354e7e0ec..d7d5d0511 100644 --- a/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java @@ -338,4 +338,45 @@ public class CDOOne2ManyIT extends RuntimeCase { assertEquals(1, g3.getPaintingArray().size()); assertSame(p3, g3.getPaintingArray().get(0)); } + + @Test + public void testReplaceToSame() { + + Painting p1 = context.newObject(Painting.class); + p1.setPaintingTitle("xa"); + + Gallery g1 = context.newObject(Gallery.class); + g1.setGalleryName("yTW"); + + p1.setToGallery(g1); + + context.commitChanges(); + ObjectContext context2 = runtime.newContext(); + + // test database data + Painting p2 = ObjectSelect.query(Painting.class).selectOne(context2); + Gallery g21 = p2.getToGallery(); + assertNotNull(g21); + assertEquals("yTW", g21.getGalleryName()); + assertEquals(1, g21.getPaintingArray().size()); + assertSame(p2, g21.getPaintingArray().get(0)); + + g21.addToPaintingArray(p2); + + // test before save + assertEquals(2, g21.getPaintingArray().size()); + assertSame(p2, g21.getPaintingArray().get(0)); + + // do save II + context2.commitChanges(); + + ObjectContext context3 = runtime.newContext(); + + Painting p3 = ObjectSelect.query(Painting.class).selectOne(context3); + Gallery g3 = p3.getToGallery(); + assertNotNull(g3); + assertEquals("yTW", g3.getGalleryName()); + assertEquals(1, g3.getPaintingArray().size()); + assertSame(p3, g3.getPaintingArray().get(0)); + } }