Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [Resolved] EMF / Teneo / Hibernate: Can not reload a EMap
[Resolved] EMF / Teneo / Hibernate: Can not reload a EMap [message #716847] Thu, 18 August 2011 15:16 Go to next message
Bernard Sarter is currently offline Bernard SarterFriend
Messages: 88
Registered: August 2011
Location: Paris, France
Member
Hello,

Following some tutorials (I'm a newbie in this area), I succeeded to save a EMF model that contains EMaps with teneo / hibernate in a mySql DB:

The 'save' seems to work only if I set the option EMAP_AS_TRUE_MAP to 'false'.

final Properties props = new Properties();
props.setProperty(Environment.DRIVER, "com.mysql.jdbc.Driver");
props.setProperty(Environment.USER, "root");
props.setProperty(Environment.URL, "jdbc:mysql://127.0.0.1:3306/" + dbName);
...
props.setProperty(Environment.HBM2DDL_AUTO, "create");

props.setProperty(PersistenceOptions.CASCADE_POLICY_ON_CONTAINMENT, "ALL");
props.setProperty(PersistenceOptions.CASCADE_POLICY_ON_NON_CONTAINMENT, "MERGE,PERSIST,REFRESH");
props.setProperty(PersistenceOptions.EMAP_AS_TRUE_MAP, "false");
...
HbDataStore dataStore = HbHelper.INSTANCE.createRegisterDataStore(dataStoreName);
dataStore.setEPackages(new EPackage[] { SysmodPackage.eINSTANCE });
dataStore.setDataStoreProperties(props);
dataStore.initialize();
...
SessionFactory sessionFactory = dataStore.getSessionFactory();
{
    Session session = sessionFactory.openSession();
    session.beginTransaction();

    Long l = (Long) session.save(model);
...


but I don't know how to reload this model from the database.

I tried a

...
SessionFactory sessionFactory = dataStore.getSessionFactory();
{
    Session session = sessionFactory.openSession();
    session.beginTransaction();
            
    model = (Model) session.load("Model", l);


but it fails with the following error when it reaches my first map (myMap)


org.eclipse.emf.teneo.hibernate.HbMapperException: The field myMap can not be set using object org.hibernate.collection.PersistentList on target xxx.sysmod.impl.ModelImpl
	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.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:152)
	at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:982)
	at org.hibernate.loader.Loader.doQuery(Loader.java:857)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
	at org.hibernate.loader.Loader.loadEntity(Loader.java:2037)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)
	at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3268)
	at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)
	at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)
	at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
	at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:269)
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
	at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1038)
	at org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerUserType.nullSafeGet(EContainerUserType.java:384)
	at org.hibernate.type.AbstractType.hydrate(AbstractType.java:104)
	at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2265)
	at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)
	at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)
	at org.hibernate.loader.Loader.getRow(Loader.java:1355)
	at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
	at org.hibernate.loader.Loader.doQuery(Loader.java:829)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
	at org.hibernate.loader.Loader.loadEntity(Loader.java:2037)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)
	at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3268)
	at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)
	at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)
	at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
	at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:269)
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
	at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1038)
	at org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerUserType.nullSafeGet(EContainerUserType.java:384)
	at org.hibernate.type.AbstractType.hydrate(AbstractType.java:104)
	at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2265)
	at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)
	at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)
	at org.hibernate.loader.Loader.getRow(Loader.java:1355)
	at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
	at org.hibernate.loader.Loader.doQuery(Loader.java:829)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
	at org.hibernate.loader.Loader.loadEntity(Loader.java:2037)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)
	at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3268)
	at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)
	at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)
	at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
	at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:269)
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
	at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1038)
	at org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerUserType.nullSafeGet(EContainerUserType.java:384)
	at org.hibernate.type.AbstractType.hydrate(AbstractType.java:104)
	at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2265)
	at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)
	at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)
	at org.hibernate.loader.Loader.getRow(Loader.java:1355)
	at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
	at org.hibernate.loader.Loader.doQuery(Loader.java:829)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
	at org.hibernate.loader.Loader.loadEntity(Loader.java:2037)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)
	at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3268)
	at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)
	at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)
	at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
	at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:269)
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
	at org.hibernate.impl.SessionImpl.load(SessionImpl.java:985)


Any idea how to reload a model that contains maps and that was saved with EMAP_AS_TRUE_MAP=false ?

Thanks in advance for your support,

Best regards,
Bernard.

[Updated on: Fri, 19 August 2011 14:10]

Report message to a moderator

Re: EMF / Teneo / Hibernate: Can not reload a EMap [message #716917 is a reply to message #716847] Thu, 18 August 2011 18:54 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
I wonder, is this the complete stacktrace? There should be an underlying exception which is there also.

You can also debug into the EListPropertyHandler, put a breakpoint at line 457 to see what exception gets thrown.

Also what happens if you set EMAP_AS_TRUE_MAP to true?

gr. Martin

On 08/18/2011 05:16 PM, Bernard SARTER wrote:
> Hello,
>
> Following some tutorials (I'm a newbie in this area), I succeeded to save a EMF model that contains EMaps with teneo /
> hibernate in a mySql DB:
>
> The 'save' seems to work only if I set the option EMAP_AS_TRUE_MAP to 'false'.
>
>
> final Properties props = new Properties();
> props.setProperty(Environment.DRIVER, "com.mysql.jdbc.Driver");
> props.setProperty(Environment.USER, "root");
> props.setProperty(Environment.URL, "jdbc:mysql://127.0.0.1:3306/" + dbName);
> ...
> props.setProperty(Environment.HBM2DDL_AUTO, "create");
>
> props.setProperty(PersistenceOptions.CASCADE_POLICY_ON_CONTAINMENT, "ALL");
> props.setProperty(PersistenceOptions.CASCADE_POLICY_ON_NON_CONTAINMENT, "MERGE,PERSIST,REFRESH");
> props.setProperty(PersistenceOptions.EMAP_AS_TRUE_MAP, "false");
> ...
> HbDataStore dataStore = HbHelper.INSTANCE.createRegisterDataStore(dataStoreName);
> dataStore.setEPackages(new EPackage[] { SysmodPackage.eINSTANCE });
> dataStore.setDataStoreProperties(props);
> dataStore.initialize();
> ...
> SessionFactory sessionFactory = dataStore.getSessionFactory();
> {
> Session session = sessionFactory.openSession();
> session.beginTransaction();
>
> Long l = (Long) session.save(model);
> ...
>
>
> but I don't know how to reload this model from the database.
>
> I tried a
>
> ...
> SessionFactory sessionFactory = dataStore.getSessionFactory();
> {
> Session session = sessionFactory.openSession();
> session.beginTransaction();
> model = (Model) session.load("Model", l);
>
>
> but it fails with the following error when it reaches my first map (myMap)
>
>
>
> org.eclipse.emf.teneo.hibernate.HbMapperException: The field myMap can not be set using object
> org.hibernate.collection.PersistentList on target xxx.sysmod.impl.ModelImpl
> 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.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:152)
> at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:982)
> at org.hibernate.loader.Loader.doQuery(Loader.java:857)
> at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
> at org.hibernate.loader.Loader.loadEntity(Loader.java:2037)
> at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)
> at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)
> at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3268)
> at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)
> at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)
> at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
> at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:269)
> at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
> at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
> at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1038)
> at org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerUserType.nullSafeGet(EContainerUserType.java:384)
> at org.hibernate.type.AbstractType.hydrate(AbstractType.java:104)
> at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2265)
> at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)
> at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)
> at org.hibernate.loader.Loader.getRow(Loader.java:1355)
> at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
> at org.hibernate.loader.Loader.doQuery(Loader.java:829)
> at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
> at org.hibernate.loader.Loader.loadEntity(Loader.java:2037)
> at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)
> at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)
> at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3268)
> at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)
> at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)
> at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
> at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:269)
> at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
> at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
> at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1038)
> at org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerUserType.nullSafeGet(EContainerUserType.java:384)
> at org.hibernate.type.AbstractType.hydrate(AbstractType.java:104)
> at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2265)
> at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)
> at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)
> at org.hibernate.loader.Loader.getRow(Loader.java:1355)
> at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
> at org.hibernate.loader.Loader.doQuery(Loader.java:829)
> at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
> at org.hibernate.loader.Loader.loadEntity(Loader.java:2037)
> at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)
> at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)
> at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3268)
> at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)
> at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)
> at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
> at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:269)
> at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
> at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
> at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1038)
> at org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerUserType.nullSafeGet(EContainerUserType.java:384)
> at org.hibernate.type.AbstractType.hydrate(AbstractType.java:104)
> at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2265)
> at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)
> at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)
> at org.hibernate.loader.Loader.getRow(Loader.java:1355)
> at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
> at org.hibernate.loader.Loader.doQuery(Loader.java:829)
> at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
> at org.hibernate.loader.Loader.loadEntity(Loader.java:2037)
> at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)
> at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)
> at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3268)
> at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)
> at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)
> at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
> at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:269)
> at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
> at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
> at org.hibernate.impl.SessionImpl.load(SessionImpl.java:985)
>
>
> Any idea how to reload a model that contains maps and that was saved with EMAP_AS_TRUE_MAP=false ?
>
> Thanks in advance for your support,
>
> Best regards,
> Bernard.
>


--

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: EMF / Teneo / Hibernate: Can not reload a EMap [message #717038 is a reply to message #716917] Fri, 19 August 2011 06:48 Go to previous messageGo to next message
Bernard Sarter is currently offline Bernard SarterFriend
Messages: 88
Registered: August 2011
Location: Paris, France
Member
Hello Martin, and thank your for your support.

To answer to your questions / remarks:

1) Problem with the load: There was indeed a second part of the stack trace that I forgot to post, and here is it:
...
Caused by: java.lang.IllegalArgumentException: Can not set org.eclipse.emf.common.util.EMap field xxx.sysmod.impl.ModelImpl.myMap to org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersistableEList
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
	at sun.reflect.UnsafeObjectFieldAccessorImpl.set(Unknown Source)
	at java.lang.reflect.Field.set(Unknown Source)
	at org.eclipse.emf.teneo.hibernate.mapping.property.EListPropertyHandler.set(EListPropertyHandler.java:445)
	... 124 more


2) If I do not force EMAP_AS_TRUE_MAP to false, then even the session.save(model) fails with following errors:
java.lang.ClassCastException: org.eclipse.emf.common.util.BasicEMap$DelegatingMap cannot be cast to java.util.Collection
	at org.hibernate.type.CollectionType.getElementsIterator(CollectionType.java:237)
	at org.hibernate.type.CollectionType.getElementsIterator(CollectionType.java:226)
	at org.hibernate.engine.CascadingAction.getLoadedElementsIterator(CascadingAction.java:459)
	at org.hibernate.engine.CascadingAction$5.getCascadableChildrenIterator(CascadingAction.java:256)
	at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:423)
	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.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:475)
	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:353)
	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)


Some info. about my config, just in case:
- Eclipse 3.7
- Teneo 1.2.0.v201107080556
- Hibernate 3.6.0.201107071603

Hope that helps ...
Bernard.
Re: EMF / Teneo / Hibernate: Can not reload a EMap [message #717092 is a reply to message #717038] Fri, 19 August 2011 09:17 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Bernard,
It seems that Teneo does not detect that your field is an EMap field. Can you post your ecore model? If it is
confidential then you can also email it directly to me.

gr. Martin

On 08/19/2011 08:48 AM, Bernard SARTER wrote:
> Hello Martin, and thank your for your support.
>
> To answer to your questions / remarks:
>
> 1) Problem with the load: There was indeed a second part of the stack trace that I forgot to post, and here is it:
>
> ...
> Caused by: java.lang.IllegalArgumentException: Can not set org.eclipse.emf.common.util.EMap field
> xxx.sysmod.impl.ModelImpl.myMap to org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersistableEList
> at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
> at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
> at sun.reflect.UnsafeObjectFieldAccessorImpl.set(Unknown Source)
> at java.lang.reflect.Field.set(Unknown Source)
> at org.eclipse.emf.teneo.hibernate.mapping.property.EListPropertyHandler.set(EListPropertyHandler.java:445)
> ... 124 more
>
>
> 2) If I do not force EMAP_AS_TRUE_MAP to false, then even the session.save(model) fails with following errors:
>
> java.lang.ClassCastException: org.eclipse.emf.common.util.BasicEMap$DelegatingMap cannot be cast to java.util.Collection
> at org.hibernate.type.CollectionType.getElementsIterator(CollectionType.java:237)
> at org.hibernate.type.CollectionType.getElementsIterator(CollectionType.java:226)
> at org.hibernate.engine.CascadingAction.getLoadedElementsIterator(CascadingAction.java:459)
> at org.hibernate.engine.CascadingAction$5.getCascadableChildrenIterator(CascadingAction.java:256)
> at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:423)
> 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.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:475)
> at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:353)
> at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
> at
> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
>
> at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
> at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
> at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)
> at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)
> at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)
>
>
> Some info. about my config, just in case:
> - Eclipse 3.7
> - Teneo 1.2.0.v201107080556
> - Hibernate 3.6.0.201107071603
>
> Hope that helps ...
> Bernard.
>


--

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: EMF / Teneo / Hibernate: Can not reload a EMap [message #717166 is a reply to message #717092] Fri, 19 August 2011 13:58 Go to previous messageGo to next message
Bernard Sarter is currently offline Bernard SarterFriend
Messages: 88
Registered: August 2011
Location: Paris, France
Member
No Message Body
Re: EMF / Teneo / Hibernate: Can not reload a EMap [message #717174 is a reply to message #717166] Fri, 19 August 2011 14:08 Go to previous messageGo to next message
Bernard Sarter is currently offline Bernard SarterFriend
Messages: 88
Registered: August 2011
Location: Paris, France
Member
Ok, there was a bug in my ecore file (wrong definition, with a useless EReference in addition of the required 'key' and 'value' EFeatures for all the maps):

Thank you a lot Martin for pointing it out !

Bernard.
Re: EMF / Teneo / Hibernate: Can not reload a EMap [message #717198 is a reply to message #717174] Fri, 19 August 2011 14:26 Go to previous message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Ha good to know that this was the issue!

gr. Martin

On 08/19/2011 04:08 PM, Bernard SARTER wrote:
> Ok, there was a bug in my ecore file (wrong definition, with a useless EReference in addition of the required 'key' and
> 'value' EFeatures for all the maps):
>
> Thank you a lot Martin for pointing it out !
>
> Bernard.
>


--

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
Previous Topic:[Resolved] Import emf model in another
Next Topic:[CDO] Locking in 4.x
Goto Forum:
  


Current Time: Fri Apr 26 07:18:45 GMT 2024

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

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

Back to the top