Almost there!
Ok, I just made the changes you suggested, and it is working, kinda.
I insert table A first (because that's where I get my Id from)
I assign the ID from A into B
then I go to insert table B
if I try to tell it that the primarykey=true  and autoincrement="false"
(beacause I don't want it to try to get the Identity from the DB for this
table, because it is not an Identity)
I get the exception 

 org.apache.ojb.broker.util.sequence.SequenceManagerException: Field does
not support autoincrement, please check repository: null

so I set autoincrement="true" (just to see if that would work) and then it
works (Yay!) but I also see that it made the trip to the db to try to get
the Identity (because it thinks there is one for this table) and I would
like to avoid that unecessary trip (if possible).

Why does it get upset that autoincrement="false" ?


p.s.
I had to make a custom getLastInsertIdentityQuery() because thats the only
way that I could get OJB to call the DB with the statement I need for DB2
SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
the PlatformDb2Impl doesn't have anything in that method, so I had to extend
it and override.





-----Original Message-----
From: Armin Waibel [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 24, 2004 6:02 PM
To: OJB Users List
Subject: Re: sequence manager help (order of inserts to avoid FK
problems)


Hi John,

McCaffrey, John G. wrote:
> I have a DB generated Identity column for Table A and I am able to use OJB
> to insert that object A and see what the identity is with a custom
> getLastInsertIdentityQuery() method. (Yay!)
> 

Why you don't use SequenceManagerNativeImpl?
http://db.apache.org/ojb/sequencemanager.html#nativeSequenceManager

> I have a table B that is associated to Table A, but its ID is not
generated.
> When I insert into Table A and get the generated ID, I would like to
insert
> into table B and use that same ID. 
> in my mapping for Table A I have a reference descriptor to Table B, with
> auto-XXX all true
>

You can't use auto-udate true in your case, because OJB needs the PK of 
B to set the FK in A before storing A (assume you declared an 1:1 
reference between A and B).
The SequenceManager interface contains two methods only for handle DB 
identity based key generation:
setReferenceFKs(Object obj, ClassDescriptor cld)
afterStore(JdbcAccess dbAccess, ClassDescriptor cld, Object

> If I try to insert Obj A that has an Obj B inside of it, it appears that
OJB
> tries to insert Obj B first. This will fail because the ID has not been
> generated yet.
> 
> How can I get OJB to insert Obj A first, then assign that ID to Obj B ?
> 

Think with your current solution it is only possible if you store all 
objects by hand and set auto-update false. Store B first then set FK in 
A and store A.

regards,
Armin

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

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

Reply via email to