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">


Reply via email to