You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2006/02/22 22:08:14 UTC

svn commit: r379896 - in /db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb: broker/BidirectionalAssociationTest.java otm/CopyTest.java repository_junit.xml

Author: arminw
Date: Wed Feb 22 13:08:13 2006
New Revision: 379896

URL: http://svn.apache.org/viewcvs?rev=379896&view=rev
Log:
add new tests

Modified:
    db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/BidirectionalAssociationTest.java
    db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/otm/CopyTest.java
    db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit.xml

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/BidirectionalAssociationTest.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/BidirectionalAssociationTest.java?rev=379896&r1=379895&r2=379896&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/BidirectionalAssociationTest.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/BidirectionalAssociationTest.java Wed Feb 22 13:08:13 2006
@@ -1,17 +1,19 @@
 package org.apache.ojb.broker;
 
-import java.util.Iterator;
+import java.io.Serializable;
 import java.util.Collection;
+import java.util.Iterator;
 
+import org.apache.ojb.broker.metadata.ClassDescriptor;
+import org.apache.ojb.broker.metadata.ObjectReferenceDescriptor;
 import org.apache.ojb.broker.query.Criteria;
 import org.apache.ojb.broker.query.Query;
 import org.apache.ojb.broker.query.QueryFactory;
-import org.apache.ojb.broker.metadata.ClassDescriptor;
-import org.apache.ojb.broker.metadata.ObjectReferenceDescriptor;
+import org.apache.ojb.broker.util.ObjectModification;
 import org.apache.ojb.junit.PBTestCase;
 
 /**
- * tests a bidirectional association A<-->B
+ * Tests a bidirectional association A<-->B
  * @see org.apache.ojb.odmg.BidirectionalAssociationTest for equivalent test in ODMG
  */
 public class BidirectionalAssociationTest extends PBTestCase
@@ -37,14 +39,227 @@
         super.tearDown();
     }
 
+    public void testCreateDeleteWithAutoincrement_1()
+    {
+        ojbChangeReferenceSetting(ObjectAA.class, "relatedB", true,
+                ObjectReferenceDescriptor.CASCADE_OBJECT, ObjectReferenceDescriptor.CASCADE_OBJECT, false);
+        ojbChangeReferenceSetting(ObjectBB.class, "relatedA", true,
+                ObjectReferenceDescriptor.CASCADE_OBJECT, ObjectReferenceDescriptor.CASCADE_OBJECT, false);
+
+        ObjectAA a = new ObjectAA();
+        ObjectBB b = new ObjectBB();
+        broker.beginTransaction();
+        // first store both objects
+        broker.store(a, ObjectModification.INSERT);
+        broker.store(b, ObjectModification.INSERT);
+        // now set references
+        a.setRelatedB(b);
+        b.setRelatedA(a);
+        // update both
+        broker.store(a, ObjectModification.UPDATE);
+        broker.commitTransaction();
+
+        Criteria crit = new Criteria();
+        crit.addLike("pk", a.getPk());
+        Query query = QueryFactory.newQuery(ObjectAA.class, crit);
+        ObjectAA result_AA = (ObjectAA) broker.getObjectByQuery(query);
+        assertNotNull(result_AA);
+        assertNotNull(result_AA.getRelatedB());
+
+        crit = new Criteria();
+        crit.addLike("pk", b.getPk());
+        query = QueryFactory.newQuery(ObjectBB.class, crit);
+        ObjectBB result_BB = (ObjectBB) broker.getObjectByQuery(query);
+        assertNotNull(result_BB);
+        assertNotNull(result_BB.getRelatedA());
+
+        broker.beginTransaction();
+        // cascade delete enabled, will delete first ObjectAA then ObjectBB
+        broker.delete(b);
+        broker.commitTransaction();
+
+        crit = new Criteria();
+        crit.addLike("pk", a.getPk());
+        query = QueryFactory.newQuery(ObjectAA.class, crit);
+        result_AA = (ObjectAA) broker.getObjectByQuery(query);
+        assertNull(result_AA);
+
+        crit = new Criteria();
+        crit.addLike("pk", b.getPk());
+        query = QueryFactory.newQuery(ObjectBB.class, crit);
+        result_BB = (ObjectBB) broker.getObjectByQuery(query);
+        assertNull(result_BB);
+    }
+
+    public void testCreateDeleteWithAutoincrement_2()
+    {
+        ojbChangeReferenceSetting(ObjectAA.class, "relatedB", true,
+                ObjectReferenceDescriptor.CASCADE_OBJECT, ObjectReferenceDescriptor.CASCADE_NONE, false);
+        ojbChangeReferenceSetting(ObjectBB.class, "relatedA", true,
+                ObjectReferenceDescriptor.CASCADE_OBJECT, ObjectReferenceDescriptor.CASCADE_NONE, false);
+
+        ObjectAA a = new ObjectAA();
+        ObjectBB b = new ObjectBB();
+        // now set references
+        a.setRelatedB(b);
+        b.setRelatedA(a);
+        broker.beginTransaction();
+        // first store both objects
+        broker.store(a);
+        // update b to force OJB to set the FK
+        broker.store(b);
+        broker.commitTransaction();
+
+        Criteria crit = new Criteria();
+        crit.addLike("pk", a.getPk());
+        Query query = QueryFactory.newQuery(ObjectAA.class, crit);
+        ObjectAA result_AA = (ObjectAA) broker.getObjectByQuery(query);
+        assertNotNull(result_AA);
+        assertNotNull(result_AA.getRelatedB());
+
+        crit = new Criteria();
+        crit.addLike("pk", b.getPk());
+        query = QueryFactory.newQuery(ObjectBB.class, crit);
+        ObjectBB result_BB = (ObjectBB) broker.getObjectByQuery(query);
+        assertNotNull(result_BB);
+        assertNotNull(result_BB.getRelatedA());
+
+        broker.beginTransaction();
+        broker.delete(b);
+        broker.delete(a);
+        broker.commitTransaction();
+
+        crit = new Criteria();
+        crit.addLike("pk", a.getPk());
+        query = QueryFactory.newQuery(ObjectAA.class, crit);
+        result_AA = (ObjectAA) broker.getObjectByQuery(query);
+        assertNull(result_AA);
+
+        crit = new Criteria();
+        crit.addLike("pk", b.getPk());
+        query = QueryFactory.newQuery(ObjectBB.class, crit);
+        result_BB = (ObjectBB) broker.getObjectByQuery(query);
+        assertNull(result_BB);
+    }
+
+    public void testCreateDeleteWithAutoincrement_3()
+    {
+        ojbChangeReferenceSetting(ObjectAA.class, "relatedB", true,
+                ObjectReferenceDescriptor.CASCADE_NONE, ObjectReferenceDescriptor.CASCADE_NONE, false);
+        ojbChangeReferenceSetting(ObjectBB.class, "relatedA", true,
+                ObjectReferenceDescriptor.CASCADE_NONE, ObjectReferenceDescriptor.CASCADE_NONE, false);
+
+        ObjectAA a = new ObjectAA();
+        ObjectBB b = new ObjectBB();
+        // now set references
+        a.setRelatedB(b);
+        b.setRelatedA(a);
+        broker.beginTransaction();
+        // first insert a
+        broker.store(a, ObjectModification.INSERT);
+        // link (set FK to a) and insert b
+        broker.serviceBrokerHelper().link(b, true);
+        broker.store(b, ObjectModification.INSERT);
+        // link a (set FK to b)
+        broker.serviceBrokerHelper().link(a, false);
+        // update FK of a
+        broker.store(a, ObjectModification.UPDATE);
+        broker.commitTransaction();
+
+        Criteria crit = new Criteria();
+        crit.addLike("pk", a.getPk());
+        Query query = QueryFactory.newQuery(ObjectAA.class, crit);
+        ObjectAA result_AA = (ObjectAA) broker.getObjectByQuery(query);
+        assertNotNull(result_AA);
+        assertNotNull(result_AA.getRelatedB());
+
+        crit = new Criteria();
+        crit.addLike("pk", b.getPk());
+        query = QueryFactory.newQuery(ObjectBB.class, crit);
+        ObjectBB result_BB = (ObjectBB) broker.getObjectByQuery(query);
+        assertNotNull(result_BB);
+        assertNotNull(result_BB.getRelatedA());
+
+        broker.beginTransaction();
+        // cascade delete enabled
+        broker.delete(b);
+        broker.delete(a);
+        broker.commitTransaction();
+
+        crit = new Criteria();
+        crit.addLike("pk", a.getPk());
+        query = QueryFactory.newQuery(ObjectAA.class, crit);
+        result_AA = (ObjectAA) broker.getObjectByQuery(query);
+        assertNull(result_AA);
+
+        crit = new Criteria();
+        crit.addLike("pk", b.getPk());
+        query = QueryFactory.newQuery(ObjectBB.class, crit);
+        result_BB = (ObjectBB) broker.getObjectByQuery(query);
+        assertNull(result_BB);
+    }
+
+    public void testCreateDeleteWithAutoincrement_4()
+    {
+        ojbChangeReferenceSetting(ObjectAA.class, "relatedB", true,
+                ObjectReferenceDescriptor.CASCADE_LINK, ObjectReferenceDescriptor.CASCADE_NONE, false);
+        ojbChangeReferenceSetting(ObjectBB.class, "relatedA", true,
+                ObjectReferenceDescriptor.CASCADE_LINK, ObjectReferenceDescriptor.CASCADE_NONE, false);
+
+        ObjectAA a = new ObjectAA();
+        ObjectBB b = new ObjectBB();
+        broker.beginTransaction();
+        // first store both objects
+        broker.store(a);
+        broker.store(b);
+        // now set references
+        a.setRelatedB(b);
+        b.setRelatedA(a);
+        // update a and b to force OJB to set the FK
+        broker.store(a);
+        broker.store(b);
+        broker.commitTransaction();
+
+        Criteria crit = new Criteria();
+        crit.addLike("pk", a.getPk());
+        Query query = QueryFactory.newQuery(ObjectAA.class, crit);
+        ObjectAA result_AA = (ObjectAA) broker.getObjectByQuery(query);
+        assertNotNull(result_AA);
+        assertNotNull(result_AA.getRelatedB());
+
+        crit = new Criteria();
+        crit.addLike("pk", b.getPk());
+        query = QueryFactory.newQuery(ObjectBB.class, crit);
+        ObjectBB result_BB = (ObjectBB) broker.getObjectByQuery(query);
+        assertNotNull(result_BB);
+        assertNotNull(result_BB.getRelatedA());
+
+        broker.beginTransaction();
+        broker.delete(b);
+        broker.commitTransaction();
+
+        crit = new Criteria();
+        crit.addLike("pk", a.getPk());
+        query = QueryFactory.newQuery(ObjectAA.class, crit);
+        result_AA = (ObjectAA) broker.getObjectByQuery(query);
+        assertNotNull(result_AA);
+        assertNull(result_AA.getRelatedB());
+
+        crit = new Criteria();
+        crit.addLike("pk", b.getPk());
+        query = QueryFactory.newQuery(ObjectBB.class, crit);
+        result_BB = (ObjectBB) broker.getObjectByQuery(query);
+        assertNull(result_BB);
+    }
+
     public void testAutoRefreshTrue()
     {
-        String pkSuffix = "_" + System.currentTimeMillis();
+        String pkSuffix = "testAutoRefreshTrue_" + System.currentTimeMillis();
         ObjectReferenceDescriptor ord_A = null;
         ObjectReferenceDescriptor ord_B = null;
-        ClassDescriptor cld_A = broker.getClassDescriptor(BidirectionalAssociationObjectA.class);
+        ClassDescriptor cld_A = broker.getClassDescriptor(ObjectA.class);
         ord_A = cld_A.getObjectReferenceDescriptorByName("relatedB");
-        ClassDescriptor cld_B = broker.getClassDescriptor(BidirectionalAssociationObjectB.class);
+        ClassDescriptor cld_B = broker.getClassDescriptor(ObjectB.class);
         ord_B = cld_B.getObjectReferenceDescriptorByName("relatedA");
         boolean oldA = ord_A.isRefresh();
         boolean oldB = ord_B.isRefresh();
@@ -55,7 +270,7 @@
             createWithUpdate(pkSuffix);
             Criteria crit = new Criteria();
             crit.addLike("pk", "%" + pkSuffix);
-            Query query = QueryFactory.newQuery(BidirectionalAssociationObjectB.class, crit);
+            Query query = QueryFactory.newQuery(ObjectB.class, crit);
             Collection result = broker.getCollectionByQuery(query);
             assertEquals(1, result.size());
         }
@@ -66,9 +281,9 @@
         }
     }
 
-    public void testCreateDelete()
+    public void testCreateDeleteDisabledAutoincrement_()
     {
-        String pkSuffix = "_" + System.currentTimeMillis();
+        String pkSuffix = "testCreateDeleteDisabledAutoincrement_" + System.currentTimeMillis();
         createWithUpdate(pkSuffix);
         deleteAllA();
         deleteAllB();
@@ -77,9 +292,9 @@
     private void createWithUpdate(String pkSuffix)
     {
         broker.beginTransaction();
-        BidirectionalAssociationObjectA a = new BidirectionalAssociationObjectA();
+        ObjectA a = new ObjectA();
         a.setPk("A" + pkSuffix);
-        BidirectionalAssociationObjectB b = new BidirectionalAssociationObjectB();
+        ObjectB b = new ObjectB();
         b.setPk("B" + pkSuffix);
         broker.store(a);
         broker.store(b);
@@ -104,12 +319,12 @@
         Criteria crit = new Criteria();
         Query q;
         Iterator iter;
-        q = QueryFactory.newQuery(BidirectionalAssociationObjectA.class, crit);
+        q = QueryFactory.newQuery(ObjectA.class, crit);
         iter = broker.getIteratorByQuery(q);
-        BidirectionalAssociationObjectA temp = null;
+        ObjectA temp = null;
         while (iter.hasNext())
         {
-            temp = (BidirectionalAssociationObjectA) iter.next();
+            temp = (ObjectA) iter.next();
             if (temp.getRelatedB() == null)
             {
                 fail("relatedB not found");
@@ -128,12 +343,12 @@
         Criteria crit = new Criteria();
         Query q;
         Iterator iter;
-        q = QueryFactory.newQuery(BidirectionalAssociationObjectB.class, crit);
+        q = QueryFactory.newQuery(ObjectB.class, crit);
         iter = broker.getIteratorByQuery(q);
-        BidirectionalAssociationObjectB temp = null;
+        ObjectB temp = null;
         while (iter.hasNext())
         {
-            temp = (BidirectionalAssociationObjectB) iter.next();
+            temp = (ObjectB) iter.next();
             if (temp.getRelatedA() == null)
             {
                 fail("relatedA not found");
@@ -165,14 +380,14 @@
         Criteria crit = new Criteria();
         Query q;
         Iterator iter;
-        q = QueryFactory.newQuery(BidirectionalAssociationObjectA.class, crit);
+        q = QueryFactory.newQuery(ObjectA.class, crit);
         iter = broker.getIteratorByQuery(q);
-        BidirectionalAssociationObjectA temp = null;
+        ObjectA temp = null;
         broker.beginTransaction();
         while (iter.hasNext())
         {
-            temp = (BidirectionalAssociationObjectA) iter.next();
-            BidirectionalAssociationObjectB b = temp.getRelatedB();
+            temp = (ObjectA) iter.next();
+            ObjectB b = temp.getRelatedB();
             if (b != null)
             {
                 b.setRelatedA(null);
@@ -188,14 +403,14 @@
         Criteria crit = new Criteria();
         Query q;
         Iterator iter;
-        q = QueryFactory.newQuery(BidirectionalAssociationObjectB.class, crit);
+        q = QueryFactory.newQuery(ObjectB.class, crit);
         iter = broker.getIteratorByQuery(q);
-        BidirectionalAssociationObjectB temp = null;
+        ObjectB temp = null;
         broker.beginTransaction();
         while (iter.hasNext())
         {
-            temp = (BidirectionalAssociationObjectB) iter.next();
-            BidirectionalAssociationObjectA a = temp.getRelatedA();
+            temp = (ObjectB) iter.next();
+            ObjectA a = temp.getRelatedA();
             if (a != null)
             {
                 a.setRelatedB(null);
@@ -204,5 +419,114 @@
             broker.delete(temp);
         }
         broker.commitTransaction();
+    }
+
+
+
+
+
+    //===================================================================
+    // inner classes
+    //===================================================================
+
+    /**
+     * with enabled autoincrement
+     */
+    public static class ObjectAA extends ObjectA
+    {
+
+    }
+    /**
+     * with enabled autoincrement
+     */
+    public static class ObjectBB extends ObjectB
+    {
+
+    }
+    /**
+     * with disabled autoincrement
+     */
+    public static class ObjectA implements Serializable
+    {
+        private String pk;
+        private String fkToB;
+        private ObjectB relatedB;
+
+        public ObjectA()
+        {
+        }
+
+        public String getPk()
+        {
+            return pk;
+        }
+
+        public void setPk(String pk)
+        {
+            this.pk = pk;
+        }
+
+        public String getFkToB()
+        {
+            return fkToB;
+        }
+
+        public void setFkToB(String fkToB)
+        {
+            this.fkToB = fkToB;
+        }
+
+        public ObjectB getRelatedB()
+        {
+            return relatedB;
+        }
+
+        public void setRelatedB(ObjectB relatedB)
+        {
+            this.relatedB = relatedB;
+        }
+    }
+    /**
+     * with disabled autoincrement
+     */
+    public static class ObjectB implements Serializable
+    {
+        private String pk;
+        private String fkToA;
+        private ObjectA relatedA;
+
+        public ObjectB()
+        {
+        }
+
+        public String getPk()
+        {
+            return pk;
+        }
+
+        public void setPk(String pk)
+        {
+            this.pk = pk;
+        }
+
+        public String getFkToA()
+        {
+            return fkToA;
+        }
+
+        public void setFkToA(String fkToA)
+        {
+            this.fkToA = fkToA;
+        }
+
+        public ObjectA getRelatedA()
+        {
+            return relatedA;
+        }
+
+        public void setRelatedA(ObjectA relatedA)
+        {
+            this.relatedA = relatedA;
+        }
     }
 }

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/otm/CopyTest.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/otm/CopyTest.java?rev=379896&r1=379895&r2=379896&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/otm/CopyTest.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/otm/CopyTest.java Wed Feb 22 13:08:13 2006
@@ -44,7 +44,7 @@
 	private OTMConnection _conn;
 	private Zoo m_zoo;
 	private TestClassA m_tca;
-	private BidirectionalAssociationObjectA m_baoa;
+	private BidirectionalAssociationTest.ObjectA m_baoa;
 
 	public CopyTest(String name)
 	{
@@ -132,25 +132,25 @@
 	 */
 	public void testMetadataCopy3() throws LockingException
 	{
-		BidirectionalAssociationObjectA a = generateBidirectional();
+		BidirectionalAssociationTest.ObjectA a = generateBidirectional();
 		internalTest3(m_mdcs, a);
 	}
 
 	public void testSerializeCopy3() throws LockingException
 	{
-		BidirectionalAssociationObjectA a = generateBidirectional();
+		BidirectionalAssociationTest.ObjectA a = generateBidirectional();
 		internalTest3(m_scs, a);
 	}
 
 	public void testReflectiveCopy3() throws LockingException
 	{
-		BidirectionalAssociationObjectA a = generateBidirectional();
+		BidirectionalAssociationTest.ObjectA a = generateBidirectional();
 		internalTest3(m_rcs, a);
 	}
 
-	private void internalTest3(ObjectCopyStrategy strategy, BidirectionalAssociationObjectA a)
+	private void internalTest3(ObjectCopyStrategy strategy, BidirectionalAssociationTest.ObjectA a)
 	{
-		BidirectionalAssociationObjectA copy = (BidirectionalAssociationObjectA) strategy.copy(a, m_pb);
+		BidirectionalAssociationTest.ObjectA copy = (BidirectionalAssociationTest.ObjectA) strategy.copy(a, m_pb);
 		assertTrue(a != copy);
 		assertTrue(copy.getPk().equals("abc123"));
 		assertTrue(copy.getRelatedB().getPk().equals("xyz987"));
@@ -163,7 +163,7 @@
 		assertTrue(zoo.getAnimals().size() == copy.getAnimals().size());
 	}
 
-	private BidirectionalAssociationObjectA generateBidirectional() throws LockingException
+	private BidirectionalAssociationTest.ObjectA generateBidirectional() throws LockingException
 	{
 		if (m_baoa != null)
 		{
@@ -173,16 +173,16 @@
 		{
 			Transaction tx = _kit.getTransaction(_conn);
 			tx.begin();
-			BidirectionalAssociationObjectA a = new BidirectionalAssociationObjectA();
+			BidirectionalAssociationTest.ObjectA a = new BidirectionalAssociationTest.ObjectA();
 			a.setPk("abc123");
 			Identity oid = _conn.getIdentity(a);
-			a = (BidirectionalAssociationObjectA) _conn.getObjectByIdentity(oid);
+			a = (BidirectionalAssociationTest.ObjectA) _conn.getObjectByIdentity(oid);
 			if (a == null)
 			{
-				a = new BidirectionalAssociationObjectA();
+				a = new BidirectionalAssociationTest.ObjectA();
 				a.setPk("abc123");
 				_conn.makePersistent(a);
-				BidirectionalAssociationObjectB b = new BidirectionalAssociationObjectB();
+				BidirectionalAssociationTest.ObjectB b = new BidirectionalAssociationTest.ObjectB();
 				b.setPk("xyz987");
 				_conn.makePersistent(b);
 				a.setRelatedB(b);

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit.xml
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit.xml?rev=379896&r1=379895&r2=379896&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit.xml Wed Feb 22 13:08:13 2006
@@ -2008,7 +2008,7 @@
 
 <!-- tests for bidirectional association -->
 <class-descriptor
-	class="org.apache.ojb.broker.BidirectionalAssociationObjectA"
+	class="org.apache.ojb.broker.BidirectionalAssociationTest$ObjectA"
 	table="BIDIR_A"
  >
      <field-descriptor
@@ -2025,14 +2025,14 @@
      />
     <reference-descriptor
         name="relatedB"
-        class-ref="org.apache.ojb.broker.BidirectionalAssociationObjectB"
+        class-ref="org.apache.ojb.broker.BidirectionalAssociationTest$ObjectB"
      >
         <foreignkey field-ref="fkToB"/>
      </reference-descriptor>
  </class-descriptor>
 
  <class-descriptor
-	class="org.apache.ojb.broker.BidirectionalAssociationObjectB"
+	class="org.apache.ojb.broker.BidirectionalAssociationTest$ObjectB"
 	table="BIDIR_B"
  >
      <field-descriptor
@@ -2049,12 +2049,62 @@
      />
     <reference-descriptor
         name="relatedA"
-        class-ref="org.apache.ojb.broker.BidirectionalAssociationObjectA"
+        class-ref="org.apache.ojb.broker.BidirectionalAssociationTest$ObjectA"
      >
         <foreignkey field-ref="fkToA"/>
      </reference-descriptor>
  </class-descriptor>
 
+<class-descriptor
+	class="org.apache.ojb.broker.BidirectionalAssociationTest$ObjectAA"
+	table="BIDIR_A"
+ >
+     <field-descriptor
+        name="pk"
+        column="pk"
+        jdbc-type="VARCHAR"
+        primarykey="true"
+        autoincrement="true"
+     />
+     <field-descriptor
+       name="fkToB"
+       column="fk_to_B"
+       jdbc-type="VARCHAR"
+     />
+    <reference-descriptor
+        name="relatedB"
+        class-ref="org.apache.ojb.broker.BidirectionalAssociationTest$ObjectBB"
+     >
+        <foreignkey field-ref="fkToB"/>
+     </reference-descriptor>
+ </class-descriptor>
+
+ <class-descriptor
+	class="org.apache.ojb.broker.BidirectionalAssociationTest$ObjectBB"
+	table="BIDIR_B"
+ >
+     <field-descriptor
+        name="pk"
+        column="pk"
+        jdbc-type="VARCHAR"
+        primarykey="true"
+        autoincrement="true"
+     />
+     <field-descriptor
+       name="fkToA"
+       column="fk_to_A"
+       jdbc-type="VARCHAR"
+     />
+    <reference-descriptor
+        name="relatedA"
+        class-ref="org.apache.ojb.broker.BidirectionalAssociationTest$ObjectAA"
+     >
+        <foreignkey field-ref="fkToA"/>
+     </reference-descriptor>
+ </class-descriptor>
+
+
+
 <!-- Definitions for extent org.apache.ojb.broker.InterfaceAnimal -->
    <class-descriptor class="org.apache.ojb.broker.InterfaceAnimal">
       <extent-class class-ref="org.apache.ojb.broker.Mammal" />
@@ -3087,6 +3137,9 @@
              jdbc-type="VARCHAR"
         />
     </class-descriptor>
+
+
+        
     <class-descriptor
        class="org.apache.ojb.broker.Owner"
        table="Owner"



---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org