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 8ccb7eda7 CAY-2866 DefaultDataDomainFlushAction breaks on circular 
relationship update
8ccb7eda7 is described below

commit 8ccb7eda7e8083bd482d03a9406ff4b240e73e43
Author: Nikita Timofeev <stari...@gmail.com>
AuthorDate: Tue Aug 13 16:24:15 2024 +0400

    CAY-2866 DefaultDataDomainFlushAction breaks on circular relationship update
---
 .../org/apache/cayenne/CircularDependencyIT.java   | 28 ++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java 
b/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
index f65cf7e4e..8a8c0f190 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
@@ -20,6 +20,8 @@
 package org.apache.cayenne;
 
 import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships.E1;
 import org.apache.cayenne.testdo.relationships.E2;
 import org.apache.cayenne.testdo.relationships.ReflexiveAndToOne;
@@ -28,8 +30,12 @@ import org.apache.cayenne.unit.UnitDbAdapter;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
 import org.apache.cayenne.unit.di.runtime.RuntimeCase;
 import org.apache.cayenne.unit.di.runtime.UseCayenneRuntime;
+import org.junit.After;
 import org.junit.Test;
 
+import java.sql.SQLException;
+import java.sql.Types;
+
 import static org.junit.Assert.*;
 
 @UseCayenneRuntime(CayenneProjects.RELATIONSHIPS_PROJECT)
@@ -41,6 +47,27 @@ public class CircularDependencyIT extends RuntimeCase {
     @Inject
     private ObjectContext context;
 
+    @Inject
+    private DBHelper dbHelper;
+
+    @After
+    public void cleanUp() throws SQLException {
+        // manually cleanup circular references
+        TableHelper e1 = new TableHelper(dbHelper, "CYCLE_E1", "id", "e2_id", 
"text");
+        e1.setColumnTypes(Types.INTEGER, Types.INTEGER, Types.VARCHAR);
+        TableHelper e2 = new TableHelper(dbHelper, "CYCLE_E2", "id", "e1_id", 
"text");
+        e2.setColumnTypes(Types.INTEGER, Types.INTEGER, Types.VARCHAR);
+        TableHelper reflexive = new TableHelper(dbHelper, 
"REFLEXIVE_AND_TO_ONE", "REFLEXIVE_AND_TO_ONE_ID", "NAME", "PARENT_ID");
+
+        e1.update().set("e2_id", null, Types.INTEGER).execute();
+        e2.update().set("e1_id", null, Types.INTEGER).execute();
+        e1.deleteAll();
+        e2.deleteAll();
+
+        reflexive.update().set("PARENT_ID", null, Types.INTEGER).execute();
+        reflexive.deleteAll();
+    }
+
     @Test()
     public void testCycle() {
         E1 e1 = context.newObject(E1.class);
@@ -76,6 +103,7 @@ public class CircularDependencyIT extends RuntimeCase {
 
         e1.setText("e1 #" + 1);
         e2.setText("e2 #" + 2);
+        context.commitChanges();
 
         e1.setE2(e2);
         context.commitChanges();

Reply via email to