McCaffrey, John G. wrote:
I am using rc 4. i can't get to CVS because I am behind a firewall (and my
manager only wants us to use the labled builds)

I tried your suggestion to set the primarykey=true, autoincrement="false" and access="readonly"
for my key (EVNT_RQST_ID)


and got the exception Assignment of a NULL value to a NOT NULL column "EVNT_RQST_ID" is not
allowed.


do you think that upgrading to rc 5 would help?

As I can remember there was a bug with autoincrement="false" handling, but I don't know when it was fixed. Give rc5 a change ;-)
We plan to release a new version end of this month (and final release one week later - if no major problem arise).


Is there any other way I can tell OJB not to try to autoincrement the keys?


Sorry, only possibility is to fix this in rc4 source code. See BrokerHelper#getValuesForObject


I appreciate your help on this, I see that you are getting a thousand emails
right now, and somehow you manage to answer them. Thanks!!


I try to confuse people with my "exceptional bad" english, nevertheless some people post again and again ;-)


regards,
Armin

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


Hi again,


did you try latest version from CVS? Latest version of PlatformDb2Impl override method getLastInsertIdentityQuery and return the same query string you use.

If you don't want to use the sequence manager from OJB
primarykey=true, autoincrement="false" and access="readonly" should work (and do work with latest from CVS). What version of OJB do you use?


regards,
Armin

McCaffrey, John G. wrote:

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]





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