You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Alexis <al...@gmail.com> on 2008/04/30 12:59:56 UTC

Re: Does DataContext.rollbackChanges() in 1.1.4 leave transient objects in toManyList relationships?

Hi,

i have the same issue with Cayenne 2.0 :
Some objects are inserted and added in a commited object's to-many
relationship.
An exception occured, we rollback the changes but the new objects remain in
the to-many relationship
as transient objects !
Is this a feature or a bug ?
Is there a clean workaround ?

Thanks for your answers


Mike Kienenberger wrote:
> 
> Yeah, I hit this behavior in a unit test, but I wasn't sure if it was
> a Cayenne problem or something wrong that I did.
> 
> This appears to fix the issue, although it's not really convenient:
> 
>         // Rollback changes may leave transient objects in toMany Lists.
>         if (PersistenceState.COMMITTED ==
> dataObject.getPersistenceState())
>         {
>             dataObject.setPersistenceState(PersistenceState.HOLLOW);
>         }
>         dataObject.resolveFault();
> 
> 
> 
> I've been working on maintenance for a Cayenne 1.1 project for the
> last few months, and due to some local mods (custom local event
> bridge, custom propagation of invalidation events between snapshots,
> and other minor tweeks), trying to upgrade Cayenne isn't practical at
> this point.   I did finally upgrade it from 1.1R2 to 1.1.4, though :-)
> 
> On 10/11/07, Andrus Adamchik <an...@objectstyle.org> wrote:
>> Good question... Without looking at 1.1 source code, I'd say yes. But
>> I'd say running a test would be the best way to determine that.
>> (1.1.4? when was that? :-))
>>
>> Andrus
>>
>>
>> On Oct 10, 2007, at 11:06 PM, Mike Kienenberger wrote:
>>
>> > Should I expect that DataContext.rollbackChanges() in 1.1.4 leave
>> > transient objects for new objects in toManyList relationships
>> > containing that new object?
>> >
>> > I'm pretty sure that the answer is yes.
>> >
>>
>>
> 
> 

-- 
View this message in context: http://www.nabble.com/Does-DataContext.rollbackChanges%28%29-in-1.1.4-leave-transient-objects-in-toManyList-relationships--tp13143656p16980077.html
Sent from the Cayenne - User mailing list archive at Nabble.com.


Re: Does DataContext.rollbackChanges() in 1.1.4 leave transient objects in toManyList relationships?

Posted by Mike Kienenberger <mk...@gmail.com>.
It's likely that it's the same bug that was found in Cayenne 1.1.4.
There's no clean fix if that's the case.  The workaround I originally
posted was to force each object affected back to a fault so it'd be
refetched on the next access with a cleaned up relationship list.  Not
sure how practical that is on a global basis.

On 4/30/08, Alexis <al...@gmail.com> wrote:
>
>  Hi,
>
>  i have the same issue with Cayenne 2.0 :
>  Some objects are inserted and added in a commited object's to-many
>  relationship.
>  An exception occured, we rollback the changes but the new objects remain in
>  the to-many relationship
>  as transient objects !
>  Is this a feature or a bug ?
>  Is there a clean workaround ?
>
>  Thanks for your answers
>
>
>
>  Mike Kienenberger wrote:
>  >
>  > Yeah, I hit this behavior in a unit test, but I wasn't sure if it was
>  > a Cayenne problem or something wrong that I did.
>  >
>  > This appears to fix the issue, although it's not really convenient:
>  >
>  >         // Rollback changes may leave transient objects in toMany Lists.
>  >         if (PersistenceState.COMMITTED ==
>  > dataObject.getPersistenceState())
>  >         {
>  >             dataObject.setPersistenceState(PersistenceState.HOLLOW);
>  >         }
>  >         dataObject.resolveFault();
>  >
>  >
>  >
>  > I've been working on maintenance for a Cayenne 1.1 project for the
>  > last few months, and due to some local mods (custom local event
>  > bridge, custom propagation of invalidation events between snapshots,
>  > and other minor tweeks), trying to upgrade Cayenne isn't practical at
>  > this point.   I did finally upgrade it from 1.1R2 to 1.1.4, though :-)
>  >
>  > On 10/11/07, Andrus Adamchik <an...@objectstyle.org> wrote:
>  >> Good question... Without looking at 1.1 source code, I'd say yes. But
>  >> I'd say running a test would be the best way to determine that.
>  >> (1.1.4? when was that? :-))
>  >>
>  >> Andrus
>  >>
>  >>
>  >> On Oct 10, 2007, at 11:06 PM, Mike Kienenberger wrote:
>  >>
>  >> > Should I expect that DataContext.rollbackChanges() in 1.1.4 leave
>  >> > transient objects for new objects in toManyList relationships
>  >> > containing that new object?
>  >> >
>  >> > I'm pretty sure that the answer is yes.
>  >> >
>  >>
>  >>
>  >
>  >
>
>
> --
>  View this message in context: http://www.nabble.com/Does-DataContext.rollbackChanges%28%29-in-1.1.4-leave-transient-objects-in-toManyList-relationships--tp13143656p16980077.html
>  Sent from the Cayenne - User mailing list archive at Nabble.com.
>
>