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));
+    }
 }

Reply via email to