Re: preventing foreign key to set to null

Armin Waibel <[email protected]>
Newsgroups gmane.comp.jakarta.ojb.user
Message-ID <[email protected]>
Hi,

Christopher Cheng wrote:
> It seems that if set "auto-retrieve" to false for foreign key object, when I 
> call broker.store(), it will also set the foreign key to null also!
> 
> Supposing I have 2 tables Checks and CheckBooks
> 
> <class-descriptor
>         class="Check"
>         table="Checks">
>      <field-descriptor
>             name="checkBookId"
>             column="CheckBookId"
>             jdbc-type="BIGINT"
>             />
>      ....
>      <reference-descriptor
>             name="checkBook"
>             class-ref="CheckBook"
>             auto-retrieve="false"
>             auto-update="false"
>             auto-delete="false">
>         <foreignkey field-ref="checkBookId"/>
>     </reference-descriptor>
> </class-descriptor>
> 
> As I call
> broker.retrieveObject,
> the checkbook attribute is null because auto-retrieve = false
> 
> As I call
> broker.store(check);
> OJB will set checkBookId to null also!!
> 
> Is the only way to do is to use proxy??

this would solve the problem.
Or use PB.retrieveAllReferences to load all references before upate the
object.

> Is there any other easy way to do prevent this from happening?
>

With the default PB-api no, because OJB can't decide whether the
reference is null because of auto-retrieve="false" or someone set the
reference to null after materialize it.

You can cast the PB instance to PersistenceBrokerInternal and use method
#store(Object obj, Identity oid, ClassDescriptor cld, boolean insert,
boolean ignoreReferences)
with argument 'ignoreReferences' set to 'true'. In this case OJB will
completely ignore all references and only update the fields of the object.

regards,
Armin

> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.