[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] [ClassName] cannot be merged because it has changed or been deleted since it was last read

Turns out this was my mistake. I was trying to merge() a non-persistent
object.

This brings up the question, is there a method that takes in an Entity and
calls persist() if it's non-persistent and merge() if it is? Sort of like
Hibernate's Session.saveOrUpdate() method.

Thanks,
Gili


cowwoc wrote:
> 
> Hi,
> 
> I retrieve an Entity from the DB, modify it then invoke
> EntityManager.merge() on it. For some reason EclipseLink throws this
> exception:
> 
> javax.persistence.OptimisticLockException: Exception [EclipseLink-5010]
> (Eclipse Persistence Services - 1.0 (Build 1.0 - 20080707)):
> org.eclipse.persistence.exceptions.OptimisticLockException
> Exception Description: The object [Object.toString() goes here] cannot be
> merged because it has changed or been deleted since it was last read.
> {3}Class> [className goes here]
> 
> I'm confused. Isn't the entire point of EntityManager.merge() to push
> changes from the in-memory entity back to the database? Shouldn't this
> work?
> 
> Thank you,
> Gili
> 

-- 
View this message in context: http://www.nabble.com/-ClassName--cannot-be-merged-because-it-has-changed-or-been-deleted-since-it-was-last-read-tp19465366p19465510.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.