Mindy Pereira wrote:
The answer to this appears to be yes I tried pulling an object with id = 1 and it worked like a charm.
To make things clear, you have a non-primitive PK field (Long in your case) and OJB can't handle 0 values correct? If yes, it seems like a bug. Which version do you use?
regards, Armin
I will just update my PK's
-----Original Message-----
From: Mindy Pereira [mailto:[EMAIL PROTECTED] Sent: Tuesday, April 27, 2004 10:52 AM
To: OJB Users List
Subject: RE: Retrieving referenced object
No, my PK field is a java Long. There is an object with a PK = 0, and this corresponds to the text that is being pulled with the object in the title field. However, the id does not. Does OJB have a problem with PK = 0 for non-primitive types?
-----Original Message-----
From: Armin Waibel [mailto:[EMAIL PROTECTED] Sent: Tuesday, April 27, 2004 10:50 AM
To: OJB Users List
Subject: Re: Retrieving referenced object
Hi Mindy,
seems OJB assumes received object is a 'new' object.
If you use primitive types for PK and FK fields (int, long, ...) in your
persistence capable objects, OJB has to determine which value is the 'null' representation. Currently OJB assume a primitive field is 'null' when it's value is '0'.
1083076041971|0|0|statement|SELECT A0.TITLE,A0.DESCR,A0.GOAL_ID,A0.OBJECTIVE,A0. ID FROM FP_OBJECTIVE A0 WHERE A0.ID IN ( ? )|SELECT A0.TITLE,A0.DESCR,A0.GOAL_ID ,A0.OBJECTIVE,A0.ID FROM FP_OBJECTIVE A0 WHERE A0.ID IN ( '0' )
seems that the retrieved object has 0 as PK value. Now the question, do you use primitive PK fields?
regards Armin
Mindy Pereira wrote:
I'm seeing some very strange behavior when I try to retrieve the ObjectiveBean from the relationship described below:
<class-descriptor class="appian.fhysp.beans.ProgObjBridgeBean" table="FP_PROG_OBJBRIDGE"> <field-descriptor name="programId" column="PROGRAM_ID" jdbc-type="BIGINT" primarykey="true"/>
<field-descriptor name="objId" column="OBJ_ID" jdbc-type="BIGINT" primarykey="true"/>
<reference-descriptor
name="objective"
class-ref="appian.fhysp.beans.ObjectiveBean"
auto-update="false">
<foreignkey field-ref="objId"/>
</reference-descriptor> </class-descriptor>
ProgramBean's contain a proxy collection ProgObjBridgeBeans which hold
a
programs relationship to an objective. When I access the ProgObjBridgeBeans collection, the objective field SHOULD be filled
from
the database with the ObjectiveBean id, title, and descr. Instead, OJB is correctly retrieving the title, but seems to be overwriting the id. (See SQLSpy Output below for more information).
SQLSpy Output:
1083076041971|0|0|statement|SELECT A0.TITLE,A0.DESCR,A0.GOAL_ID,A0.OBJECTIVE,A0. ID FROM FP_OBJECTIVE A0 WHERE A0.ID IN ( ? )|SELECT A0.TITLE,A0.DESCR,A0.GOAL_ID ,A0.OBJECTIVE,A0.ID FROM FP_OBJECTIVE A0 WHERE A0.ID IN ( '0' ) 1083076042041|10|1|statement|SELECT A0.VERSION,A0.GRAB_SIZE,A0.MAX_KEY,A0.FIELDN AME,A0.TABLENAME FROM OJB_HL_SEQ A0 WHERE (A0.TABLENAME LIKE ? ) AND A0.FIELDNA ME LIKE ? |SELECT A0.VERSION,A0.GRAB_SIZE,A0.MAX_KEY,A0.FIELDNAME,A0.TABLENAME FROM OJB_HL_SEQ A0 WHERE (A0.TABLENAME LIKE 'SEQ_FP_OBJECTIVE' ) AND A0.FIELDNA ME LIKE 'ID' 1083076042061|10|1|statement|SELECT VERSION,GRAB_SIZE,MAX_KEY,FIELDNAME,TABLENAM E FROM OJB_HL_SEQ WHERE TABLENAME = ? AND FIELDNAME = ? |SELECT VERSION,GRAB_SI ZE,MAX_KEY,FIELDNAME,TABLENAME FROM OJB_HL_SEQ WHERE TABLENAME = 'SEQ_FP_OBJECTI VE' AND FIELDNAME = 'ID' 1083076042071|0|1|statement|UPDATE OJB_HL_SEQ SET MAX_KEY=?,GRAB_SIZE=?,VERSION= ? WHERE TABLENAME = ? AND FIELDNAME = ? AND VERSION = ? |UPDATE OJB_HL_SEQ SET MAX_KEY='352',GRAB_SIZE='20',VERSION='16' WHERE TABLENAME = 'SEQ_FP_OBJECTIVE' AND FIELDNAME = 'ID' AND VERSION = '15' 1083076042071|0|1|commit||
Note that after it retrieves the information from FP_OBJECTIVE
(filling
out the proxy collection of ProgObjBridgeBeans), it then makes a call
to
the primary key auto-incrementer, and the id of the retrieved ObjectiveBean is set to MAX_KEY +1;
Any ideas?
--------------------------------------------------------------------- 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]
