Hi Oliver,

> I have not got any reply to this, so I just
sorry for that

The bug you describe reside in a part of OJB that wasn't
my special subject, thus the best thing I think is to post
a test case. I will check in the test ASAP.

regards,
Armin

----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, January 15, 2003 8:34 AM
Subject: RE: 0.9.8, ODMG: primary key with FieldConversion


Hello,

I have not got any reply to this, so I just
want to ask again.  I am pretty sure that
this bug is due to an issuficient fix for OJB48.
That fix just applies to the PersistenceBroker API,
but when using the ODMG API, a different
assertFKAssignment() method is used.  See below.

Shall I make a bug report a scarab?
Shall I write a test case?

Oliver


> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Monday, January 13, 2003 10:45 AM
> To: [EMAIL PROTECTED]
> Subject: 0.9.8, ODMG: primary key with FieldConversion
>
>
> Hello,
>
> I am using OJB 0.9.8 and I am comparing the PersistenceBroker
> API to the
> ODMG API.
>
> I think I have encountered a bug.
>
> I have a class NodeOJB which has a reference to itsself.  The
> primary key
> field is of type long,
> and I have written a FieldConversion to BigDecimal. (see code
> snipplets at
> the bottom.)
>
> I can store instances of this class with the
> PersistenceBroker API, but I
> get the following
> exception when I use the ODMG API:
>
> java.lang.IllegalArgumentException
> at
> sun.reflect.UnsafeLongFieldAccessorImpl.set(UnsafeLongFieldAcc
> essorImpl.java
> :84)
> at java.lang.reflect.Field.set(Field.java:519)
> at
> org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefa
> ultImpl.set(Pe
> rsistentFieldDefaultImpl.java:146)
> at
> org.apache.ojb.odmg.TransactionImpl.assertFkAssignment(Transac
> tionImpl.java:
> 806)
> at
> org.apache.ojb.odmg.TransactionImpl.assignReferenceFKs(Transac
> tionImpl.java:
> 831)
> at
> org.apache.ojb.odmg.TransactionImpl.lock(TransactionImpl.java:250)
>
> I have debugged into the code and found out that the problem
> can be fixed
> with the following  two
> modifications in Identity.<init> and
> TransactionImpl.lockCollections(),
> respectively.
>
> But I think this solution is sub-optimal.  A better solution
> would be to
> factor out
> common code from the methods
> PersistenceBrokerImpl.assertFKAssignment() (which is used during
> PersistenceProker.store()) and
> odmg.TransactionImpl.assertFKAssignment()  (which is used during
> odmg.Transaction.lock())
>
> What do you think?
>
> Oliver
>
> ------------------
> U:\or-mappers\ojb\jakarta-ojb-0.9.8>diff
> src\java\org\apache\ojb\broker\Identity.java
> ..\ojb-0.9.8-orig\src\java\org\apache\ojb\broker\Identity.java
> 144c144
> <                 this.pkValues = cld.getKeyValues(objectToIdentitify,
> false);
> ---
> >                 this.pkValues =
> cld.getKeyValues(objectToIdentitify);
> 405c405
> < }
> ------------------
> U:\or-mappers\ojb\jakarta-ojb-0.9.8>diff
> src\java\org\apache\ojb\odmg\TransactionImpl.java
> ..\ojb-0.9.8-orig\src\java\org\apache\ojb\odmg\TransactionImpl.java
> 873c873
> <                 Object[] objPkValues = cld.getKeyValues(newTxObject,
> false);
> ---
> >                 Object[] objPkValues =
> cld.getKeyValues(newTxObject);
> ------------------
>
> class NodeOJB
> {
>   long uid;
>   NodeOJB rootNode;
>   long rootNode_refid;
>   ...
> }
>
> <class-descriptor class="de.ppi.neuwerk.repman.persistent.ojb.NodeOjb"
> table="NODE">
> ...
> <field-descriptor id="1" name="uid" column="UID" autoincrement="true"
> primarykey="true"
>                         jdbc-type="NUMERIC"
> conversion="LongToBigDecimalConversion" />
> <field-descriptor id="5" name="rootNode_refid" column="ROOTNODE_FK"
>                         jdbc-type="NUMERIC"
> conversion="LongToBigDecimalConversion"
> />
> ...
> </class-descriptor>
>
> --
>   Dr. Oliver Matz
>   ppi Media GmbH
>   Deliusstra�e 10
>   D-24114 Kiel
>   phone +49 (0) 43 1-53 53-422
>   fax     +49 (0) 43 1-53 53-2 22
>   email mailto:[EMAIL PROTECTED]
>   web www.ppi.de
>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>

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





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

Reply via email to