openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Craig L Russell <Craig.Russ...@Sun.COM>
Subject Re: Replacing Entities while Managed
Date Wed, 08 Nov 2006 02:57:54 GMT
Hi Don,

The merge operation takes as a parameter a detached instance, not a  
new instance.

TopLink Essentials might not be able to tell the difference between a  
detached and a new instance. So it might work in that environment.

But the behavior you're describing is not portable.

Is there a way to detach an instance with the identity you want to  
merge, and update that instance? Then you would have a portable  
application.

Craig

On Nov 7, 2006, at 4:55 PM, DonBrady wrote:

>
> Surely.
>
>
> (1) We do a find method which returns an entity A from the database.
>
> (2) We also have an unmanaged entity instance B separately, that we  
> created
> outside any persistence context, whose values we wish to use to  
> update those
> in A, and then rewrite A to the database.
>
> (3) We just set the key of B to that of A (namely "48") and do a  
> "merge."
> This worked to update A in TopLink Essentials.
>
> (4) Under OpenJPA, we get the exact error message:
>
>> An object of type "com.xxx.entity.entities.FeCmeCommittee" with oid
>> "48"
>> already exists in this context; another cannot be persisted.
>>
>
> (5) This seems wrong.  The reason the two objects have the same id is
> precisely that we want to update the existing entity.
>
>
> THANK YOU.
>
> Don
>
>
>
> Craig L Russell wrote:
>>
>> Hi Don,
>>
>> Could you please be just a bit more specific about what you are
>> trying to do and what error you encounter?
>>
>> Thanks,
>>
>> Craig
>>
>> On Nov 7, 2006, at 2:50 PM, DonBrady wrote:
>>
>>>
>>> We are converting a TopLink Essentials application to OpenJPA
>>>
>>> Under Toplink Essentials, we could replace a managed entity with
>>> another
>>> that had the same identity (key) by doing a merge.
>>>
>>> When we try this in OpenJPA, we get the following error:
>>>
>>> An object of type "com.xxx.entity.entities.FeCmeCommittee" with oid
>>> "48"
>>> already exists in this context; another cannot be persisted.
>>>
>>> However, "48" is actually the identity or key, not the oid.  The
>>> oid's are
>>> different.     They key is the same and therefore it should be
>>> possible to
>>> replace it via a merge.
>>>
>>> Or am I missing something?
>>>
>>> Thanks,
>>>
>>> Don
>>>
>>>
>>> -- 
>>> View this message in context: http://www.nabble.com/Replacing-
>>> Entities-while-Managed-tf2592059.html#a7229110
>>> Sent from the open-jpa-dev mailing list archive at Nabble.com.
>>>
>>
>> Craig Russell
>> Architect, Sun Java Enterprise System http://java.sun.com/products/ 
>> jdo
>> 408 276-5638 mailto:Craig.Russell@sun.com
>> P.S. A good JDO? O, Gasp!
>>
>>
>>
>>
>
> -- 
> View this message in context: http://www.nabble.com/Replacing- 
> Entities-while-Managed-tf2592059.html#a7230848
> Sent from the open-jpa-dev mailing list archive at Nabble.com.
>

Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:Craig.Russell@sun.com
P.S. A good JDO? O, Gasp!


Mime
View raw message