Hello, We are currently using OJB 1.0.1 . We have a table that is a child to two different tables. These two parent tables have composite primary keys and they share part of the keys in the child table. The child has a 1:1 relation to both the parents.
The tables look something like this: CREATE TABLE "CHILD" ( "CHILD_ID" INTEGER NOT NULL PRIMARY KEY, "PARENT_ID" INTEGER , "ABC" INTEGER , "PARENT2_ID" INTEGER ) ALTER TABLE "CHILD" ADD CONSTRAINT "PARENT2_FK" FOREIGN KEY ("PARENT2_ID", "ABC") REFERENCES "PARENT2" ("PARENT_ID", "ABC") ALTER TABLE "CHILD" ADD CONSTRAINT "PARENT1_FK" FOREIGN KEY ("PARENT_ID", "ABC") REFERENCES "PARENT" ("PARENT_ID", "ABC") CREATE TABLE "PARENT" ( "PARENT_ID" INTEGER NOT NULL, "ABC" INTEGER NOT NULL) ALTER TABLE "PARENT" ADD CONSTRAINT "PK1" PRIMARY KEY ("PARENT_ID", "ABC"); CREATE TABLE "PARENT2" ( "PARENT2_ID" INTEGER NOT NULL, "ABC" INTEGER NOT NULL) ALTER TABLE "PARENT2" ADD CONSTRAINT "PK1" PRIMARY KEY ("PARENT2_ID", "ABC"); The OJB Classes:: class Child{ private Integer childId; private Integer parentId; private Integer abc; private Integer parent2Id; //rel private Parent parent; private Parent2 parent2; } class Parent{ private Integer parentId; private Integer abc; //rel private Child child; } class Parent2{ private Integer parent2Id; private Integer abc; //rel private Child child; } The repository mapping: <class-descriptor class="Child" table="CHILD"> <field-descriptor name="childId" column="CHILD_ID" primarykey="true" jdbc-type="INTEGER"/> <field-descriptor name="parentId" column="PARENT_ID" jdbc-type="INTEGER"/> <field-descriptor name="abc" column="ABC" jdbc-type="INTEGER"/> <field-descriptor name="parent2Id" column="PARENT2_ID" jdbc-type="INTEGER"/> <reference-descriptor name="parent" class-ref="Parent"> <foreignkey field-ref="parentId" /> <foreignkey field-ref="abc" /> </reference-descriptor> <reference-descriptor name="parent2" class-ref="Parent2"> <foreignkey field-ref="parent2Id" /> <foreignkey field-ref="abc" /> </reference-descriptor> </class-descriptor> <class-descriptor class="Parent" table="PARENT"> <field-descriptor name="parentId" column="PARENT_ID" primarykey="true" jdbc-type="INTEGER"/> <field-descriptor name="abc" column="ABC" primarykey="true" jdbc-type="INTEGER"/> <reference-descriptor name="child" class-ref="Child"> <foreignkey field-ref="parentId" /> <foreignkey field-ref="abc" /> </reference-descriptor> </class-descriptor> <class-descriptor class="parent2" table="PARENT"> <field-descriptor name="parent2Id" column="PARENT2_ID" primarykey="true" jdbc-type="INTEGER"/> <field-descriptor name="abc" column="ABC" primarykey="true" jdbc-type="INTEGER"/> <reference-descriptor name="child" class-ref="child"> <foreignkey field-ref="parent2Id" /> <foreignkey field-ref="abc" /> </reference-descriptor> </class-descriptor> When storing the child table, it is possible that data from only one of the parent tables is populated. When I am trying to store in that database, I dont have a problem when I call the set method on one of the parent objects of the child but when I try to refer the second parent in the same manner, I am getting a sql exception that says that data does not exist in the parent table and the transaction is being rolled back(The parent object is stored in the database first...). I have tried removing the OJB relation and manually setting the foreign key fields for the second parent. In this case I am able to store the part of the key that is not shared but the shared part is being set to null in the database. I have also tried to make one of them a collection-descriptor. I got the same sql exception. I am not sure if there is a problem with how the database is setup or how my OJB mappings are and classes are setup. At this point, short of making a database change, I feel I have exhausted all available option. Am I missing something? Any advice would be appreciated.. Thanks, -Sri. ____________________________________________________________________________________ TV dinner still cooling? Check out "Tonight's Picks" on Yahoo! TV. http://tv.yahoo.com/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]