Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Teneo Problems using merge HbMapperException(Teneo Problems using merge HbMapperException)
Teneo Problems using merge HbMapperException [message #759282] Mon, 28 November 2011 09:16 Go to next message
Jean-Louis  is currently offline Jean-Louis Friend
Messages: 18
Registered: October 2011
Junior Member
Hi,

I have a strange behavior using Teneo because I can load an object without problems but when I try to merge the same object I have the following exception:

org.eclipse.emf.teneo.hibernate.HbMapperException: Type java.util.ArrayList can not be used as a replacement for elist EList of type: org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersistableEList of member inMyAttribute owned by my.own.domain.impl.MyClassImpl with delegate list java.util.ArrayList

Can somebody tell me what's hapenning?

Thanks in advance
Re: Teneo Problems using merge HbMapperException [message #759302 is a reply to message #759282] Mon, 28 November 2011 10:18 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hmm, seems to be an error, so you first read the object, close the session and then in a new session merge the exact
same instance as you read?

Can you post the complete stacktrace and the code snippet reading/merging?

gr. Martin

On 11/28/2011 10:16 AM, Jean-Louis wrote:
> Hi,
>
> I have a strange behavior using Teneo because I can load an object without problems but when I try to merge the same
> object I have the following exception:
>
> org.eclipse.emf.teneo.hibernate.HbMapperException: Type java.util.ArrayList can not be used as a replacement for elist
> EList of type: org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersistableEList of member inMyAttribute owned by
> my.own.domain.impl.MyClassImpl with delegate list java.util.ArrayList
>
> Can somebody tell me what's hapenning?
>
> Thanks in advance
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo Problems using merge HbMapperException [message #759354 is a reply to message #759302] Mon, 28 November 2011 13:28 Go to previous messageGo to next message
Jean-Louis  is currently offline Jean-Louis Friend
Messages: 18
Registered: October 2011
Junior Member
Hi Martin! Smile

I'm using a singleton to get an EntityManager to persist/merge an object, so I'm getting the entitymanager using EntityManagerFactory.createEntityManager(). I persist the object in database when is not persisted and merge the object if he already exist (is persisted) in database. The exception throwed occur when I try to merge but when i save there are no problem.
It's not easy to reproduce the problem in minor project, but here are a little example:

public CarStore save(CarStore object) {
RootContainer rootContainer = object.getRootContainer();

System.out.println("RootContainer this:" + rootContainer);
System.out.println("RootContainer id:" + rootContainer.getId());

if (rootContainer.getId() == null) {
System.out.println("persist");
entityManager.persist(rootContainer);
} else {
System.out.println("merge");
entityManager.merge(rootContainer);
}

return null;
}


By the stacktrace can you see something strange?

org.eclipse.emf.teneo.hibernate.HbMapperException: Type java.util.ArrayList can not be used as a replacement for elist EList of type: org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersistableEList of member inInnerCardPortConnections owned by my.domain.datamodel.model.eqm.impl.CardPortImpl with delegate list java.util.ArrayList
at org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersistableEList.replaceDelegate(HibernatePersistableEList.java:246)
at org.eclipse.emf.teneo.hibernate.mapping.property.EListPropertyHandler.set(EListPropertyHandler.java:425)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:583)
at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3822)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:299)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.ejb.event.EJB3MergeEventListener.saveWithGeneratedId(EJB3MergeEventListener.java:62)
at org.hibernate.event.def.DefaultMergeEventListener.saveTransientEntity(DefaultMergeEventListener.java:415)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:341)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:630)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:287)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:261)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:630)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:287)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:261)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:867)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:851)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:855)
at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:686)
at org.eclipse.emf.teneo.hibernate.HbEntityDataStore$WrappedEntityManager.merge(HbEntityDataStore.java:606)
at my.domain.dbservices.daos.NetworkDaoImpl.save(NetworkDaoImpl.java:54)
at de.siemens.spt.editor.NetworkEditor$7.run(NetworkEditor.java:1595)
at java.lang.Thread.run(Thread.java:662)
org.eclipse.emf.teneo.hibernate.HbMapperException: The field inInnerCardPortConnections can not be set using object java.util.ArrayList on target my.domain.datamodel.model.eqm.impl.CardPortImpl
at org.eclipse.emf.teneo.hibernate.mapping.property.EListPropertyHandler.set(EListPropertyHandler.java:457)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:583)
at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3822)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:299)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.ejb.event.EJB3MergeEventListener.saveWithGeneratedId(EJB3MergeEventListener.java:62)
at org.hibernate.event.def.DefaultMergeEventListener.saveTransientEntity(DefaultMergeEventListener.java:415)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:341)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:630)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:287)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:261)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
at org.hibernate.event.def.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:630)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:287)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:261)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:867)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:851)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:855)
at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:686)
at org.eclipse.emf.teneo.hibernate.HbEntityDataStore$WrappedEntityManager.merge(HbEntityDataStore.java:606)
at my.domain.dbservices.daos.NetworkDaoImpl.save(NetworkDaoImpl.java:54)
at de.siemens.spt.editor.NetworkEditor$7.run(NetworkEditor.java:1595)
at java.lang.Thread.run(Thread.java:662)
Re: Teneo Problems using merge HbMapperException [message #759368 is a reply to message #759354] Mon, 28 November 2011 13:45 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Jean-Louis,
Can you enter a bugzilla with this info? I will do my best to take a look (few days..), note that if your object has
been read by the same entitymanager instance then you don't need to do merge, it will automatically be saved at
commit/flush.

gr. Martin

On 11/28/2011 02:28 PM, Jean-Louis wrote:
> Hi Martin! :)
>
> I'm using a singleton to get an EntityManager to persist/merge an object, so I'm getting the entitymanager using
> EntityManagerFactory.createEntityManager(). I persist the object in database when is not persisted and merge the object
> if he already exist (is persisted) in database. The exception throwed occur when I try to merge but when i save there
> are no problem.
> It's not easy to reproduce the problem in minor project, but here are a little example:
>
> public CarStore save(CarStore object) {
> RootContainer rootContainer = object.getRootContainer();
>
> System.out.println("RootContainer this:" + rootContainer);
> System.out.println("RootContainer id:" + rootContainer.getId());
>
> if (rootContainer.getId() == null) {
> System.out.println("persist");
> entityManager.persist(rootContainer);
> } else {
> System.out.println("merge");
> entityManager.merge(rootContainer);
> }
>
> return null;
> }
>
>
> By the stacktrace can you see something strange?
>
> org.eclipse.emf.teneo.hibernate.HbMapperException: Type java.util.ArrayList can not be used as a replacement for elist
> EList of type: org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersistableEList of member
> inInnerCardPortConnections owned by my.domain.datamodel.model.eqm.impl.CardPortImpl with delegate list java.util.ArrayList
> at
> org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersistableEList.replaceDelegate(HibernatePersistableEList.java:246)
> at org.eclipse.emf.teneo.hibernate.mapping.property.EListPropertyHandler.set(EListPropertyHandler.java:425)
> at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:583)
> at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3822)
> at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:299)
> at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
> at org.hibernate.ejb.event.EJB3MergeEventListener.saveWithGeneratedId(EJB3MergeEventListener.java:62)
> at org.hibernate.event.def.DefaultMergeEventListener.saveTransientEntity(DefaultMergeEventListener.java:415)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:341)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
> at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:630)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:287)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:261)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
> at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:630)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:287)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:261)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:867)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:851)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:855)
> at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:686)
> at org.eclipse.emf.teneo.hibernate.HbEntityDataStore$WrappedEntityManager.merge(HbEntityDataStore.java:606)
> at my.domain.dbservices.daos.NetworkDaoImpl.save(NetworkDaoImpl.java:54)
> at de.siemens.spt.editor.NetworkEditor$7.run(NetworkEditor.java:1595)
> at java.lang.Thread.run(Thread.java:662)
> org.eclipse.emf.teneo.hibernate.HbMapperException: The field inInnerCardPortConnections can not be set using object
> java.util.ArrayList on target my.domain.datamodel.model.eqm.impl.CardPortImpl
> at org.eclipse.emf.teneo.hibernate.mapping.property.EListPropertyHandler.set(EListPropertyHandler.java:457)
> at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:583)
> at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3822)
> at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:299)
> at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
> at org.hibernate.ejb.event.EJB3MergeEventListener.saveWithGeneratedId(EJB3MergeEventListener.java:62)
> at org.hibernate.event.def.DefaultMergeEventListener.saveTransientEntity(DefaultMergeEventListener.java:415)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:341)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:450)
> at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:336)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
> at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:630)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:287)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:261)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
> at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
> at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
> at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
> at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
> at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
> at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
> at org.hibernate.event.def.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:630)
> at org.hibernate.event.def.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:287)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:261)
> at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84)
> at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:867)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:851)
> at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:855)
> at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:686)
> at org.eclipse.emf.teneo.hibernate.HbEntityDataStore$WrappedEntityManager.merge(HbEntityDataStore.java:606)
> at my.domain.dbservices.daos.NetworkDaoImpl.save(NetworkDaoImpl.java:54)
> at de.siemens.spt.editor.NetworkEditor$7.run(NetworkEditor.java:1595)
> at java.lang.Thread.run(Thread.java:662)
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo Problems using merge HbMapperException [message #759609 is a reply to message #759368] Tue, 29 November 2011 10:38 Go to previous message
Jean-Louis  is currently offline Jean-Louis Friend
Messages: 18
Registered: October 2011
Junior Member
Hi Martin!

Thanks for your quick reply. I have followed your wise advise and now is working fine! You have reason if i use the same entity manager it's not necessary call the merge code, the commit will resolve. I think it's not a bug of Teneo but a bug of my code Smile

Many thanks Martin!
Previous Topic:CDO starting but not started - how to get more logging info
Next Topic:Teneo - Programmatic Events
Goto Forum:
  


Current Time: Thu Mar 28 12:39:10 GMT 2024

Powered by FUDForum. Page generated in 0.03266 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top