Thanks Armin. I think thats what we have to do.

regards 
Sri.

----- Original Message ----
From: Armin Waibel <[EMAIL PROTECTED]>
To: OJB Users List <ojb-user@db.apache.org>
Sent: Wednesday, February 14, 2007 4:58:24 PM
Subject: Re: Problem with multiple composite keys


Srilakshmi Machineni wrote:
> Hi Armin,
> 
> The value for "abc" is not the same for both parent references. In
> fact thats how we differentiate the data. If one always overrides the
> other, does that mean we have to change the database structure? Or is
> there any other work around?

sorry no, I don't know a workaround (how to store different values in 
the same field/column). Think you have to add another FK column (then 
you can use abc1 and abc2 - same as for parentId and paren2Id).

regards,
Armin

> 
> Thanks Sri.
> 
> ----- Original Message ---- From: Armin Waibel <[EMAIL PROTECTED]> 
> To: OJB Users List <ojb-user@db.apache.org> Sent: Wednesday, February
> 14, 2007 3:28:54 PM Subject: Re: Problem with multiple composite keys
> 
> 
> 
> Hi Srilakshmi,
> 
> Srilakshmi Machineni wrote:
>> Armin, Thanks for your response. I am not sure if this is a problem
>>  with the bidirectional reference. We have these references
>> throughout the application. We store the child in two steps but its
>> the same error. As of now we first store the child table without
>> references and then store the parent table and then the reference
>> to the parent table in the child table. Could sharing of the
>> composite keys be a problem?
> 
> Oh, now I got it. You are right, the problem is the shared FK 'abc' -
>  one will always override the other. Has 'abc' always the same value
> for both parent references?
> 
> regards, Armin
> 
>> Thanks Sri.
>> 
>> ----- Original Message ---- From: Armin Waibel <[EMAIL PROTECTED]>
>>  To: OJB Users List <ojb-user@db.apache.org> Sent: Wednesday,
>> February 14, 2007 11:40:04 AM Subject: Re: Problem with multiple
>> composite keys
>> 
>> 
>> Hi,
>> 
>> could this problem be caused by the bidirectional references? How
>> do you store the child object? If you store the object in two steps
>> does this prevent the error:
>> 
>> broker.beginTransaction(); // store child without references 
>> broker.store(child); // now set the references child.setParent(p1)
>>  p1.setChild(c); ... // update child broker.store(child); 
>> broker.commitTransaction();
>> 
>> regards, Armin
>> 
>> Srilakshmi Machineni wrote:
>>> 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]
>>> 
>>> 
>> 
>> ---------------------------------------------------------------------
>>  To unsubscribe, e-mail: [EMAIL PROTECTED] For 
>> additional commands, e-mail: [EMAIL PROTECTED]
>> 
>> 
>> 
>> ____________________________________________________________________________________
>>  Do you Yahoo!? Everyone is raving about the all-new Yahoo! Mail 
>> beta. http://new.mail.yahoo.com
>> 
>> ---------------------------------------------------------------------
>>  To unsubscribe, e-mail: [EMAIL PROTECTED] For 
>> additional commands, e-mail: [EMAIL PROTECTED]
>> 
>> 
> 
> ---------------------------------------------------------------------
>  To unsubscribe, e-mail: [EMAIL PROTECTED] For
> additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 
> ____________________________________________________________________________________
>  Do you Yahoo!? Everyone is raving about the all-new Yahoo! Mail
> beta. http://new.mail.yahoo.com
> 
> ---------------------------------------------------------------------
>  To unsubscribe, e-mail: [EMAIL PROTECTED] For
> additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


 
____________________________________________________________________________________
Now that's room service!  Choose from over 150,000 hotels
in 45,000 destinations on Yahoo! Travel to find your fit.
http://farechase.yahoo.com/promo-generic-14795097

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to