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();