You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Jean-Yves Sironneau <ep...@gmail.com> on 2006/03/07 10:40:13 UTC

Re: Misc questions

Hello,

I looked more precisely at my issue regarding foreign keys not being set, so
now i'am using official OJB 1.0.4.

The exact issue is that when i persist a new object (that has not been
persisted before), the linked object is persisted and the foreign key is
set. But when i retrieve an object, then sets the linked object and then
persists the main object this time the linked object is not persisted and
the foreign key not set.

I'am using the following code, to do the persistence, so the linked object
is set before that code :

    Implementation impl = OJB.getInstance();
    TransactionExt tx = (TransactionExt) impl.newTransaction();

    tx.begin();
    tx.markDirty(product);
    tx.commit();

Can that be the reason ? Is the way OJB is navigating the object graph
different for an
initial store or an update ?

If you want i can try to package up a simple test case from that.


Thank you for your help.

Jean-Yves

2006/2/20, Jean-Yves Sironneau <ep...@gmail.com>:
>
> Hello, I have a few unrelated questions regarding OJB :
>
> - Is there a way to set the deferrable foreign key constraint setting
> using OJB xdoclet module ?
>
> - When i use anonymous foreign key in a relationship, it's working
> perfectly for collections, but
> for simple reference to an object, i have to store the referenced object
> and then store the object referencing
> it, otherwise the two objects are created in db but the foreign key id is
> not set.
>
> It's pretty hard to discover it because, when i retrieve the objects they
> are ok even if the db foreign key is not set. It's
> just later, if i restart my application for example, that the referenced
> objects fields are null.
>
> So i have two questions : Do you think it's normal behaviour ? And how can
> i force OJB to retrieve everything
> from database to be able to test this kind of possible issues ?
>
> By the way i'am using CVS version of OJB 1.1 approximately 2-3 months ago
> and the ODMG API
> (which is really working fine except for that).
>
> - Is the code for OJB 1.1 located in the 1.0 SVN branch ? Because i don't
> know if i better use
> OJB 1.0.4 (or future 1.0.5)  or the version i got from CVS.
>
>
> Thanks your for your help.
>
> Jean-Yves
>
>

Re: Misc questions

Posted by Jean-Yves Sironneau <ep...@gmail.com>.
Ok i think i got it, thank you for the explanations.

2006/3/21, Armin Waibel <ar...@apache.org>:
>
> Hi Jean-Yves,
>
> Jean-Yves Sironneau wrote:
> > Hi,
> >
> > Thanks for your help, it works by locking the object inside a
> transaction
> > and the
> > setting the referenced object, what confused me is that for a new object
> you
> > don't have to be within a transaction for the referenced object to be
> > created, but for an existing one this is the case.
> >
>
> The first one (new object) works "by accident". In general OJB compares
> object snapshots (one object snapshot made on object lock, another
> snapshot made on commit), thus OJB can only detect changes when these
> snapshots are different. If you make changes on an (persistent) object
> before the object is locked you are lost.
> When store a new object it's easier for OJB to decide whether the object
> should be marked as "dirty" and whether the FK should be refreshed/set -
> it's always "yes".
>
> regards,
> Armin
>
>
> > Thank you.
> >
> > Jean-Yves
> >
> > 2006/3/10, Armin Waibel <ar...@apache.org>:
> >> Hi Jean-Yves,
> >>
> >> Jean-Yves Sironneau wrote:
> >>> Hello,
> >>>
> >>> I looked more precisely at my issue regarding foreign keys not being
> >> set, so
> >>> now i'am using official OJB 1.0.4.
> >>>
> >>> The exact issue is that when i persist a new object (that has not been
> >>> persisted before), the linked object is persisted and the foreign key
> is
> >>> set. But when i retrieve an object, then sets the linked object and
> then
> >>> persists the main object this time the linked object is not persisted
> >> and
> >>> the foreign key not set.
> >>>
> >>> I'am using the following code, to do the persistence, so the linked
> >> object
> >>> is set before that code :
> >>>
> >>>     Implementation impl = OJB.getInstance();
> >>>     TransactionExt tx = (TransactionExt) impl.newTransaction();
> >>>
> >>>     tx.begin();
> >>>     tx.markDirty(product);
> >>>     tx.commit();
> >>>
> >>> Can that be the reason ? Is the way OJB is navigating the object graph
> >>> different for an
> >>> initial store or an update ?
> >>>
> >>> If you want i can try to package up a simple test case from that.
> >> Do you retrieve the object via oql-query and is implicit locking
> enabled?
> >>
> >> If you first lock the object and then set the linked object:
> >>>     Implementation impl = OJB.getInstance();
> >>>     TransactionExt tx = (TransactionExt) impl.newTransaction();
> >>>
> >>>     tx.begin();
> >>>     tx.lock(obj, WRITE);
> >> obj.setLinked(objB);
> >>>     tx.commit();
> >>>
> >> This way your test should pass.
> >>
> >> regards,
> >> Armin
> >>
> >>>
> >>> Thank you for your help.
> >>>
> >>> Jean-Yves
> >>>
> >>> 2006/2/20, Jean-Yves Sironneau <ep...@gmail.com>:
> >>>> Hello, I have a few unrelated questions regarding OJB :
> >>>>
> >>>> - Is there a way to set the deferrable foreign key constraint setting
> >>>> using OJB xdoclet module ?
> >>>>
> >>>> - When i use anonymous foreign key in a relationship, it's working
> >>>> perfectly for collections, but
> >>>> for simple reference to an object, i have to store the referenced
> >> object
> >>>> and then store the object referencing
> >>>> it, otherwise the two objects are created in db but the foreign key
> id
> >> is
> >>>> not set.
> >>>>
> >>>> It's pretty hard to discover it because, when i retrieve the objects
> >> they
> >>>> are ok even if the db foreign key is not set. It's
> >>>> just later, if i restart my application for example, that the
> >> referenced
> >>>> objects fields are null.
> >>>>
> >>>> So i have two questions : Do you think it's normal behaviour ? And
> how
> >> can
> >>>> i force OJB to retrieve everything
> >>>> from database to be able to test this kind of possible issues ?
> >>>>
> >>>> By the way i'am using CVS version of OJB 1.1 approximately 2-3 months
> >> ago
> >>>> and the ODMG API
> >>>> (which is really working fine except for that).
> >>>>
> >>>> - Is the code for OJB 1.1 located in the 1.0 SVN branch ? Because i
> >> don't
> >>>> know if i better use
> >>>> OJB 1.0.4 (or future 1.0.5)  or the version i got from CVS.
> >>>>
> >>>>
> >>>> Thanks your for your help.
> >>>>
> >>>> Jean-Yves
> >>>>
> >>>>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> >> For additional commands, e-mail: ojb-user-help@db.apache.org
> >>
> >>
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
>

Re: Misc questions

Posted by Armin Waibel <ar...@apache.org>.
Hi Jean-Yves,

Jean-Yves Sironneau wrote:
> Hi,
> 
> Thanks for your help, it works by locking the object inside a transaction
> and the
> setting the referenced object, what confused me is that for a new object you
> don't have to be within a transaction for the referenced object to be
> created, but for an existing one this is the case.
> 

The first one (new object) works "by accident". In general OJB compares 
object snapshots (one object snapshot made on object lock, another 
snapshot made on commit), thus OJB can only detect changes when these 
snapshots are different. If you make changes on an (persistent) object 
before the object is locked you are lost.
When store a new object it's easier for OJB to decide whether the object 
should be marked as "dirty" and whether the FK should be refreshed/set - 
it's always "yes".

regards,
Armin


> Thank you.
> 
> Jean-Yves
> 
> 2006/3/10, Armin Waibel <ar...@apache.org>:
>> Hi Jean-Yves,
>>
>> Jean-Yves Sironneau wrote:
>>> Hello,
>>>
>>> I looked more precisely at my issue regarding foreign keys not being
>> set, so
>>> now i'am using official OJB 1.0.4.
>>>
>>> The exact issue is that when i persist a new object (that has not been
>>> persisted before), the linked object is persisted and the foreign key is
>>> set. But when i retrieve an object, then sets the linked object and then
>>> persists the main object this time the linked object is not persisted
>> and
>>> the foreign key not set.
>>>
>>> I'am using the following code, to do the persistence, so the linked
>> object
>>> is set before that code :
>>>
>>>     Implementation impl = OJB.getInstance();
>>>     TransactionExt tx = (TransactionExt) impl.newTransaction();
>>>
>>>     tx.begin();
>>>     tx.markDirty(product);
>>>     tx.commit();
>>>
>>> Can that be the reason ? Is the way OJB is navigating the object graph
>>> different for an
>>> initial store or an update ?
>>>
>>> If you want i can try to package up a simple test case from that.
>> Do you retrieve the object via oql-query and is implicit locking enabled?
>>
>> If you first lock the object and then set the linked object:
>>>     Implementation impl = OJB.getInstance();
>>>     TransactionExt tx = (TransactionExt) impl.newTransaction();
>>>
>>>     tx.begin();
>>>     tx.lock(obj, WRITE);
>> obj.setLinked(objB);
>>>     tx.commit();
>>>
>> This way your test should pass.
>>
>> regards,
>> Armin
>>
>>>
>>> Thank you for your help.
>>>
>>> Jean-Yves
>>>
>>> 2006/2/20, Jean-Yves Sironneau <ep...@gmail.com>:
>>>> Hello, I have a few unrelated questions regarding OJB :
>>>>
>>>> - Is there a way to set the deferrable foreign key constraint setting
>>>> using OJB xdoclet module ?
>>>>
>>>> - When i use anonymous foreign key in a relationship, it's working
>>>> perfectly for collections, but
>>>> for simple reference to an object, i have to store the referenced
>> object
>>>> and then store the object referencing
>>>> it, otherwise the two objects are created in db but the foreign key id
>> is
>>>> not set.
>>>>
>>>> It's pretty hard to discover it because, when i retrieve the objects
>> they
>>>> are ok even if the db foreign key is not set. It's
>>>> just later, if i restart my application for example, that the
>> referenced
>>>> objects fields are null.
>>>>
>>>> So i have two questions : Do you think it's normal behaviour ? And how
>> can
>>>> i force OJB to retrieve everything
>>>> from database to be able to test this kind of possible issues ?
>>>>
>>>> By the way i'am using CVS version of OJB 1.1 approximately 2-3 months
>> ago
>>>> and the ODMG API
>>>> (which is really working fine except for that).
>>>>
>>>> - Is the code for OJB 1.1 located in the 1.0 SVN branch ? Because i
>> don't
>>>> know if i better use
>>>> OJB 1.0.4 (or future 1.0.5)  or the version i got from CVS.
>>>>
>>>>
>>>> Thanks your for your help.
>>>>
>>>> Jean-Yves
>>>>
>>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>> For additional commands, e-mail: ojb-user-help@db.apache.org
>>
>>
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: Misc questions

Posted by Jean-Yves Sironneau <ep...@gmail.com>.
Hi,

Thanks for your help, it works by locking the object inside a transaction
and the
setting the referenced object, what confused me is that for a new object you
don't have to be within a transaction for the referenced object to be
created, but for an existing one this is the case.

Thank you.

Jean-Yves

2006/3/10, Armin Waibel <ar...@apache.org>:
>
> Hi Jean-Yves,
>
> Jean-Yves Sironneau wrote:
> > Hello,
> >
> > I looked more precisely at my issue regarding foreign keys not being
> set, so
> > now i'am using official OJB 1.0.4.
> >
> > The exact issue is that when i persist a new object (that has not been
> > persisted before), the linked object is persisted and the foreign key is
> > set. But when i retrieve an object, then sets the linked object and then
> > persists the main object this time the linked object is not persisted
> and
> > the foreign key not set.
> >
> > I'am using the following code, to do the persistence, so the linked
> object
> > is set before that code :
> >
> >     Implementation impl = OJB.getInstance();
> >     TransactionExt tx = (TransactionExt) impl.newTransaction();
> >
> >     tx.begin();
> >     tx.markDirty(product);
> >     tx.commit();
> >
> > Can that be the reason ? Is the way OJB is navigating the object graph
> > different for an
> > initial store or an update ?
> >
> > If you want i can try to package up a simple test case from that.
>
> Do you retrieve the object via oql-query and is implicit locking enabled?
>
> If you first lock the object and then set the linked object:
> >     Implementation impl = OJB.getInstance();
> >     TransactionExt tx = (TransactionExt) impl.newTransaction();
> >
> >     tx.begin();
> >     tx.lock(obj, WRITE);
> obj.setLinked(objB);
> >     tx.commit();
> >
>
> This way your test should pass.
>
> regards,
> Armin
>
> >
> >
> > Thank you for your help.
> >
> > Jean-Yves
> >
> > 2006/2/20, Jean-Yves Sironneau <ep...@gmail.com>:
> >> Hello, I have a few unrelated questions regarding OJB :
> >>
> >> - Is there a way to set the deferrable foreign key constraint setting
> >> using OJB xdoclet module ?
> >>
> >> - When i use anonymous foreign key in a relationship, it's working
> >> perfectly for collections, but
> >> for simple reference to an object, i have to store the referenced
> object
> >> and then store the object referencing
> >> it, otherwise the two objects are created in db but the foreign key id
> is
> >> not set.
> >>
> >> It's pretty hard to discover it because, when i retrieve the objects
> they
> >> are ok even if the db foreign key is not set. It's
> >> just later, if i restart my application for example, that the
> referenced
> >> objects fields are null.
> >>
> >> So i have two questions : Do you think it's normal behaviour ? And how
> can
> >> i force OJB to retrieve everything
> >> from database to be able to test this kind of possible issues ?
> >>
> >> By the way i'am using CVS version of OJB 1.1 approximately 2-3 months
> ago
> >> and the ODMG API
> >> (which is really working fine except for that).
> >>
> >> - Is the code for OJB 1.1 located in the 1.0 SVN branch ? Because i
> don't
> >> know if i better use
> >> OJB 1.0.4 (or future 1.0.5)  or the version i got from CVS.
> >>
> >>
> >> Thanks your for your help.
> >>
> >> Jean-Yves
> >>
> >>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
>

Re: Misc questions

Posted by Armin Waibel <ar...@apache.org>.
Hi Jean-Yves,

Jean-Yves Sironneau wrote:
> Hello,
> 
> I looked more precisely at my issue regarding foreign keys not being set, so
> now i'am using official OJB 1.0.4.
> 
> The exact issue is that when i persist a new object (that has not been
> persisted before), the linked object is persisted and the foreign key is
> set. But when i retrieve an object, then sets the linked object and then
> persists the main object this time the linked object is not persisted and
> the foreign key not set.
> 
> I'am using the following code, to do the persistence, so the linked object
> is set before that code :
> 
>     Implementation impl = OJB.getInstance();
>     TransactionExt tx = (TransactionExt) impl.newTransaction();
> 
>     tx.begin();
>     tx.markDirty(product);
>     tx.commit();
> 
> Can that be the reason ? Is the way OJB is navigating the object graph
> different for an
> initial store or an update ?
> 
> If you want i can try to package up a simple test case from that.

Do you retrieve the object via oql-query and is implicit locking enabled?

If you first lock the object and then set the linked object:
 >     Implementation impl = OJB.getInstance();
 >     TransactionExt tx = (TransactionExt) impl.newTransaction();
 >
 >     tx.begin();
 >     tx.lock(obj, WRITE);
obj.setLinked(objB);
 >     tx.commit();
 >

This way your test should pass.

regards,
Armin

> 
> 
> Thank you for your help.
> 
> Jean-Yves
> 
> 2006/2/20, Jean-Yves Sironneau <ep...@gmail.com>:
>> Hello, I have a few unrelated questions regarding OJB :
>>
>> - Is there a way to set the deferrable foreign key constraint setting
>> using OJB xdoclet module ?
>>
>> - When i use anonymous foreign key in a relationship, it's working
>> perfectly for collections, but
>> for simple reference to an object, i have to store the referenced object
>> and then store the object referencing
>> it, otherwise the two objects are created in db but the foreign key id is
>> not set.
>>
>> It's pretty hard to discover it because, when i retrieve the objects they
>> are ok even if the db foreign key is not set. It's
>> just later, if i restart my application for example, that the referenced
>> objects fields are null.
>>
>> So i have two questions : Do you think it's normal behaviour ? And how can
>> i force OJB to retrieve everything
>> from database to be able to test this kind of possible issues ?
>>
>> By the way i'am using CVS version of OJB 1.1 approximately 2-3 months ago
>> and the ODMG API
>> (which is really working fine except for that).
>>
>> - Is the code for OJB 1.1 located in the 1.0 SVN branch ? Because i don't
>> know if i better use
>> OJB 1.0.4 (or future 1.0.5)  or the version i got from CVS.
>>
>>
>> Thanks your for your help.
>>
>> Jean-Yves
>>
>>
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: Misc questions

Posted by Jean-Yves Sironneau <ep...@gmail.com>.
I forgot to tell that to raise this issue i have to clear the persistencer
cache, otherwise everything seem's to be ok.

2006/3/7, Jean-Yves Sironneau <ep...@gmail.com>:
>
> Hello,
>
> I looked more precisely at my issue regarding foreign keys not being set,
> so now i'am using official OJB 1.0.4.
>
> The exact issue is that when i persist a new object (that has not been
> persisted before), the linked object is persisted and the foreign key is
> set. But when i retrieve an object, then sets the linked object and then
> persists the main object this time the linked object is not persisted and
> the foreign key not set.
>
> I'am using the following code, to do the persistence, so the linked object
> is set before that code :
>
>     Implementation impl = OJB.getInstance();
>     TransactionExt tx = (TransactionExt)
> impl.newTransaction();
>
>     tx.begin();
>     tx.markDirty(product);
>     tx.commit();
>
> Can that be the reason ? Is the way OJB is navigating the object graph different for an
> initial store or an update ?
>
>
> If you want i can try to package up a simple test case from that.
>
>
> Thank you for your help.
>
> Jean-Yves
>
> 2006/2/20, Jean-Yves Sironneau < epsout@gmail.com>:
> >
> > Hello, I have a few unrelated questions regarding OJB :
> >
> > - Is there a way to set the deferrable foreign key constraint setting
> > using OJB xdoclet module ?
> >
> > - When i use anonymous foreign key in a relationship, it's working
> > perfectly for collections, but
> > for simple reference to an object, i have to store the referenced object
> > and then store the object referencing
> > it, otherwise the two objects are created in db but the foreign key id
> > is not set.
> >
> > It's pretty hard to discover it because, when i retrieve the objects
> > they are ok even if the db foreign key is not set. It's
> > just later, if i restart my application for example, that the referenced
> > objects fields are null.
> >
> > So i have two questions : Do you think it's normal behaviour ? And how
> > can i force OJB to retrieve everything
> > from database to be able to test this kind of possible issues ?
> >
> > By the way i'am using CVS version of OJB 1.1 approximately 2-3 months
> > ago and the ODMG API
> > (which is really working fine except for that).
> >
> > - Is the code for OJB 1.1 located in the 1.0 SVN branch ? Because i
> > don't know if i better use
> > OJB 1.0.4 (or future 1.0.5)  or the version i got from CVS.
> >
> >
> > Thanks your for your help.
> >
> > Jean-Yves
> >
> >
>