Author: aadamchik
Date: Sun Aug 6 18:05:21 2006
New Revision: 429224
URL: http://svn.apache.org/viewvc?rev=429224&view=rev
Log:
testing many-to-many behavior in multiple contexts
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/ClientMtTable4.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/ClientMtTable5.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/MtTable4.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/MtTable5.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_ClientMtTable4.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_ClientMtTable5.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable4.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable5.java
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/.classpath
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/CayenneContextClientChannelEventsTst.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/resources/dml/CayenneContextClientChannelEventsTst.xml
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/resources/multi-tier.map.xml
Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/.classpath
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/.classpath?rev=429224&r1=429223&r2=429224&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/.classpath (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/.classpath Sun Aug 6
18:05:21 2006
@@ -2,8 +2,8 @@
<classpath>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry output="target/test-classes" kind="src"
path="src/test/java"/>
- <classpathentry excluding="**" output="src/main/resources" kind="src"
path="src/main/resources"/>
- <classpathentry excluding="**" output="src/test/resources" kind="src"
path="src/test/resources"/>
+ <classpathentry kind="src" path="src/main/resources"/>
+ <classpathentry excluding="**/*.java" output="target/test-classes"
kind="src" path="src/test/resources"/>
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con"
path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/CayenneContextClientChannelEventsTst.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/CayenneContextClientChannelEventsTst.java?rev=429224&r1=429223&r2=429224&view=diff
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/CayenneContextClientChannelEventsTst.java
(original)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/CayenneContextClientChannelEventsTst.java
Sun Aug 6 18:05:21 2006
@@ -25,6 +25,8 @@
import org.apache.cayenne.remote.service.LocalConnection;
import org.apache.cayenne.testdo.mt.ClientMtTable1;
import org.apache.cayenne.testdo.mt.ClientMtTable2;
+import org.apache.cayenne.testdo.mt.ClientMtTable4;
+import org.apache.cayenne.testdo.mt.ClientMtTable5;
import org.apache.cayenne.unit.AccessStack;
import org.apache.cayenne.unit.CayenneTestCase;
import org.apache.cayenne.unit.CayenneTestResources;
@@ -190,5 +192,44 @@
c2,
new ObjectIdQuery(new ObjectId("MtTable1", "TABLE1_ID", 1)));
assertEquals(2, o2.getTable2Array().size());
+ }
+
+ public void testSyncManyToManyRelationship() throws Exception {
+ // this resets snapshot cache...
+ createDataContext();
+
+ deleteTestData();
+ createTestData("testSyncManyToManyRelationship");
+
+ DataChannel serverChannel = new ClientServerChannel(getDomain(),
false);
+ ClientChannel clientChannel = new ClientChannel(
+ new LocalConnection(serverChannel),
+ true);
+
+ CayenneContext c1 = new CayenneContext(clientChannel);
+ CayenneContext c2 = new CayenneContext(clientChannel);
+
+ ClientMtTable4 o1 = (ClientMtTable4) DataObjectUtils.objectForQuery(
+ c1,
+ new ObjectIdQuery(new ObjectId("MtTable4", "ID", 1)));
+
+ ClientMtTable4 o2 = (ClientMtTable4) DataObjectUtils.objectForQuery(
+ c2,
+ new ObjectIdQuery(new ObjectId("MtTable4", "ID", 1)));
+
+ assertEquals(2, o1.getTable5s().size());
+ assertEquals(2, o2.getTable5s().size());
+
+ ClientMtTable5 o1r = (ClientMtTable5) DataObjectUtils.objectForQuery(
+ c1,
+ new ObjectIdQuery(new ObjectId("MtTable5", "ID", 1)));
+ o1.removeFromTable5s(o1r);
+
+ c1.commitChanges();
+
+ assertEquals(1, o1.getTable5s().size());
+ assertEquals(1, o2.getTable5s().size());
+ assertFalse(c1.internalGraphManager().hasChanges());
+ assertFalse(c2.internalGraphManager().hasChanges());
}
}
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/ClientMtTable4.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/ClientMtTable4.java?rev=429224&view=auto
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/ClientMtTable4.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/ClientMtTable4.java
Sun Aug 6 18:05:21 2006
@@ -0,0 +1,10 @@
+package org.apache.cayenne.testdo.mt;
+
+import org.apache.cayenne.testdo.mt.auto._ClientMtTable4;
+
+/**
+ * A persistent class mapped as "MtTable4" Cayenne entity.
+ */
+public class ClientMtTable4 extends _ClientMtTable4 {
+
+}
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/ClientMtTable5.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/ClientMtTable5.java?rev=429224&view=auto
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/ClientMtTable5.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/ClientMtTable5.java
Sun Aug 6 18:05:21 2006
@@ -0,0 +1,10 @@
+package org.apache.cayenne.testdo.mt;
+
+import org.apache.cayenne.testdo.mt.auto._ClientMtTable5;
+
+/**
+ * A persistent class mapped as "MtTable5" Cayenne entity.
+ */
+public class ClientMtTable5 extends _ClientMtTable5 {
+
+}
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/MtTable4.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/MtTable4.java?rev=429224&view=auto
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/MtTable4.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/MtTable4.java
Sun Aug 6 18:05:21 2006
@@ -0,0 +1,10 @@
+package org.apache.cayenne.testdo.mt;
+
+import org.apache.cayenne.testdo.mt.auto._MtTable4;
+
+public class MtTable4 extends _MtTable4 {
+
+}
+
+
+
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/MtTable5.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/MtTable5.java?rev=429224&view=auto
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/MtTable5.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/MtTable5.java
Sun Aug 6 18:05:21 2006
@@ -0,0 +1,10 @@
+package org.apache.cayenne.testdo.mt;
+
+import org.apache.cayenne.testdo.mt.auto._MtTable5;
+
+public class MtTable5 extends _MtTable5 {
+
+}
+
+
+
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_ClientMtTable4.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_ClientMtTable4.java?rev=429224&view=auto
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_ClientMtTable4.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_ClientMtTable4.java
Sun Aug 6 18:05:21 2006
@@ -0,0 +1,41 @@
+package org.apache.cayenne.testdo.mt.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.testdo.mt.ClientMtTable5;
+
+/**
+ * A generated persistent class mapped as "MtTable4" Cayenne entity. It is a
good idea to
+ * avoid changing this class manually, since it will be overwritten next time
code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public class _ClientMtTable4 extends PersistentObject {
+
+ public static final String TABLE5S_PROPERTY = "table5s";
+
+ protected List table5s;
+
+ public List getTable5s() {
+ if(objectContext != null) {
+ objectContext.prepareForAccess(this, "table5s");
+ }
+
+ return table5s;
+ }
+ public void addToTable5s(ClientMtTable5 object) {
+ if(objectContext != null) {
+ objectContext.prepareForAccess(this, "table5s");
+ }
+
+ this.table5s.add(object);
+ }
+ public void removeFromTable5s(ClientMtTable5 object) {
+ if(objectContext != null) {
+ objectContext.prepareForAccess(this, "table5s");
+ }
+
+ this.table5s.remove(object);
+ }
+
+}
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_ClientMtTable5.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_ClientMtTable5.java?rev=429224&view=auto
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_ClientMtTable5.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_ClientMtTable5.java
Sun Aug 6 18:05:21 2006
@@ -0,0 +1,27 @@
+package org.apache.cayenne.testdo.mt.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.testdo.mt.ClientMtTable4;
+
+/**
+ * A generated persistent class mapped as "MtTable5" Cayenne entity. It is a
good idea to
+ * avoid changing this class manually, since it will be overwritten next time
code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public class _ClientMtTable5 extends PersistentObject {
+
+ public static final String TABLE4S_PROPERTY = "table4s";
+
+ protected List table4s;
+
+ public List getTable4s() {
+ if(objectContext != null) {
+ objectContext.prepareForAccess(this, "table4s");
+ }
+
+ return table4s;
+ }
+
+}
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable4.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable4.java?rev=429224&view=auto
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable4.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable4.java
Sun Aug 6 18:05:21 2006
@@ -0,0 +1,27 @@
+package org.apache.cayenne.testdo.mt.auto;
+
+import java.util.List;
+
+/** Class _MtTable4 was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public class _MtTable4 extends org.apache.cayenne.CayenneDataObject {
+
+ public static final String TABLE5S_PROPERTY = "table5s";
+
+ public static final String ID_PK_COLUMN = "ID";
+
+ public void addToTable5s(org.apache.cayenne.testdo.mt.MtTable5 obj) {
+ addToManyTarget("table5s", obj, true);
+ }
+ public void removeFromTable5s(org.apache.cayenne.testdo.mt.MtTable5 obj) {
+ removeToManyTarget("table5s", obj, true);
+ }
+ public List getTable5s() {
+ return (List)readProperty("table5s");
+ }
+
+
+}
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable5.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable5.java?rev=429224&view=auto
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable5.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/java/org/apache/cayenne/testdo/mt/auto/_MtTable5.java
Sun Aug 6 18:05:21 2006
@@ -0,0 +1,20 @@
+package org.apache.cayenne.testdo.mt.auto;
+
+import java.util.List;
+
+/** Class _MtTable5 was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public class _MtTable5 extends org.apache.cayenne.CayenneDataObject {
+
+ public static final String TABLE4S_PROPERTY = "table4s";
+
+
+ public List getTable4s() {
+ return (List)readProperty("table4s");
+ }
+
+
+}
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/resources/dml/CayenneContextClientChannelEventsTst.xml
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/resources/dml/CayenneContextClientChannelEventsTst.xml?rev=429224&r1=429223&r2=429224&view=diff
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/resources/dml/CayenneContextClientChannelEventsTst.xml
(original)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/resources/dml/CayenneContextClientChannelEventsTst.xml
Sun Aug 6 18:05:21 2006
@@ -25,7 +25,41 @@
insert into MT_TABLE2 (TABLE2_ID, TABLE1_ID, GLOBAL_ATTRIBUTE)
values (1, 1, 'g1')
</value></constructor-arg>
</bean>
+
+ <bean id="O41" class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
+ <constructor-arg
type="java.lang.Class"><value>org.apache.cayenne.testdo.mt.MtTable4</value></constructor-arg>
+ <constructor-arg><value>
+ insert into MT_TABLE4 (ID) values (1)
+ </value></constructor-arg>
+ </bean>
+
+ <bean id="O51" class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
+ <constructor-arg
type="java.lang.Class"><value>org.apache.cayenne.testdo.mt.MtTable4</value></constructor-arg>
+ <constructor-arg><value>
+ insert into MT_TABLE5 (ID) values (1)
+ </value></constructor-arg>
+ </bean>
+
+ <bean id="O52"
class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
+ <constructor-arg
type="java.lang.Class"><value>org.apache.cayenne.testdo.mt.MtTable4</value></constructor-arg>
+ <constructor-arg><value>
+ insert into MT_TABLE5 (ID) values (2)
+ </value></constructor-arg>
+ </bean>
+ <bean id="O451"
class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
+ <constructor-arg
type="java.lang.Class"><value>org.apache.cayenne.testdo.mt.MtTable4</value></constructor-arg>
+ <constructor-arg><value>
+ insert into MT_JOIN45 (TABLE4_ID, TABLE5_ID) values (1, 1)
+ </value></constructor-arg>
+ </bean>
+
+ <bean id="O452"
class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
+ <constructor-arg
type="java.lang.Class"><value>org.apache.cayenne.testdo.mt.MtTable4</value></constructor-arg>
+ <constructor-arg><value>
+ insert into MT_JOIN45 (TABLE4_ID, TABLE5_ID) values (1, 2)
+ </value></constructor-arg>
+ </bean>
<!-- ======================================= -->
<!-- Data Sets -->
@@ -53,6 +87,18 @@
<list>
<ref bean="O11"/>
<ref bean="O21"/>
+ </list>
+ </constructor-arg>
+ </bean>
+
+ <bean id="testSyncManyToManyRelationship" class="java.util.ArrayList">
+ <constructor-arg>
+ <list>
+ <ref bean="O41"/>
+ <ref bean="O51"/>
+ <ref bean="O52"/>
+ <ref bean="O451"/>
+ <ref bean="O452"/>
</list>
</constructor-arg>
</bean>
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/resources/multi-tier.map.xml
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/resources/multi-tier.map.xml?rev=429224&r1=429223&r2=429224&view=diff
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/resources/multi-tier.map.xml
(original)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4-core/src/test/resources/multi-tier.map.xml
Sun Aug 6 18:05:21 2006
@@ -22,6 +22,10 @@
<db-attribute name="DELETE_RULE_ID" type="INTEGER"
isPrimaryKey="true" isMandatory="true"/>
<db-attribute name="NAME" type="VARCHAR" length="200"/>
</db-entity>
+ <db-entity name="MT_JOIN45">
+ <db-attribute name="TABLE4_ID" type="INTEGER"
isPrimaryKey="true" isMandatory="true"/>
+ <db-attribute name="TABLE5_ID" type="INTEGER"
isPrimaryKey="true" isMandatory="true"/>
+ </db-entity>
<db-entity name="MT_TABLE1">
<db-attribute name="GLOBAL_ATTRIBUTE1" type="VARCHAR"
length="100"/>
<db-attribute name="SERVER_ATTRIBUTE1" type="VARCHAR"
length="100"/>
@@ -38,6 +42,12 @@
<db-attribute name="INT_COLUMN" type="INTEGER"/>
<db-attribute name="TABLE3_ID" type="INTEGER"
isPrimaryKey="true" isMandatory="true"/>
</db-entity>
+ <db-entity name="MT_TABLE4">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true"
isMandatory="true"/>
+ </db-entity>
+ <db-entity name="MT_TABLE5">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true"
isMandatory="true"/>
+ </db-entity>
<obj-entity name="MtDeleteCascade"
className="org.apache.cayenne.testdo.mt.MtDeleteCascade"
clientClassName="org.apache.cayenne.testdo.mt.ClientMtDeleteCascade"
dbEntityName="MT_DELETE_CASCADE">
<obj-attribute name="name" type="java.lang.String"
db-attribute-path="NAME"/>
</obj-entity>
@@ -65,6 +75,10 @@
<obj-attribute name="charColumn" type="java.lang.String"
db-attribute-path="CHAR_COLUMN"/>
<obj-attribute name="intColumn" type="java.lang.Integer"
db-attribute-path="INT_COLUMN"/>
</obj-entity>
+ <obj-entity name="MtTable4"
className="org.apache.cayenne.testdo.mt.MtTable4"
clientClassName="org.apache.cayenne.testdo.mt.ClientMtTable4"
dbEntityName="MT_TABLE4">
+ </obj-entity>
+ <obj-entity name="MtTable5"
className="org.apache.cayenne.testdo.mt.MtTable5"
clientClassName="org.apache.cayenne.testdo.mt.ClientMtTable5"
dbEntityName="MT_TABLE5">
+ </obj-entity>
<db-relationship name="cascade" source="MT_DELETE_CASCADE"
target="MT_DELETE_RULE" toMany="false">
<db-attribute-pair source="DELETE_RULE_ID"
target="DELETE_RULE_ID"/>
</db-relationship>
@@ -83,12 +97,24 @@
<db-relationship name="fromNullify" source="MT_DELETE_RULE"
target="MT_DELETE_NULLIFY" toMany="true">
<db-attribute-pair source="DELETE_RULE_ID"
target="DELETE_RULE_ID"/>
</db-relationship>
+ <db-relationship name="toTable4" source="MT_JOIN45" target="MT_TABLE4"
toMany="false">
+ <db-attribute-pair source="TABLE4_ID" target="ID"/>
+ </db-relationship>
+ <db-relationship name="toTable5" source="MT_JOIN45" target="MT_TABLE5"
toMany="false">
+ <db-attribute-pair source="TABLE5_ID" target="ID"/>
+ </db-relationship>
<db-relationship name="table2Array" source="MT_TABLE1"
target="MT_TABLE2" toMany="true">
<db-attribute-pair source="TABLE1_ID" target="TABLE1_ID"/>
</db-relationship>
<db-relationship name="table1" source="MT_TABLE2" target="MT_TABLE1"
toMany="false">
<db-attribute-pair source="TABLE1_ID" target="TABLE1_ID"/>
</db-relationship>
+ <db-relationship name="joins" source="MT_TABLE4" target="MT_JOIN45"
toDependentPK="true" toMany="true">
+ <db-attribute-pair source="ID" target="TABLE4_ID"/>
+ </db-relationship>
+ <db-relationship name="joins" source="MT_TABLE5" target="MT_JOIN45"
toMany="true">
+ <db-attribute-pair source="ID" target="TABLE5_ID"/>
+ </db-relationship>
<obj-relationship name="cascade" source="MtDeleteCascade"
target="MtDeleteRule" deleteRule="Cascade" db-relationship-path="cascade"/>
<obj-relationship name="deny" source="MtDeleteDeny"
target="MtDeleteRule" deleteRule="Deny" db-relationship-path="deny"/>
<obj-relationship name="nullify" source="MtDeleteNullify"
target="MtDeleteRule" deleteRule="Nullify" db-relationship-path="nullify"/>
@@ -97,6 +123,8 @@
<obj-relationship name="fromNullify" source="MtDeleteRule"
target="MtDeleteNullify" db-relationship-path="fromNullify"/>
<obj-relationship name="table2Array" source="MtTable1"
target="MtTable2" db-relationship-path="table2Array"/>
<obj-relationship name="table1" source="MtTable2" target="MtTable1"
db-relationship-path="table1"/>
+ <obj-relationship name="table5s" source="MtTable4" target="MtTable5"
db-relationship-path="joins.toTable5"/>
+ <obj-relationship name="table4s" source="MtTable5" target="MtTable4"
db-relationship-path="joins.toTable4"/>
<query name="AllMtTable1"
factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity"
root-name="MtTable1">
</query>
<query name="MtQueryWithLocalCache"
factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity"
root-name="MtTable1">