Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » ClassCastException UnitOfWorkQueryValueHolder to EmfOwnedValueHolder
ClassCastException UnitOfWorkQueryValueHolder to EmfOwnedValueHolder [message #658647] Wed, 09 March 2011 11:40 Go to next message
Oliver Hoff is currently offline Oliver HoffFriend
Messages: 1
Registered: March 2011
Junior Member
I'm using teneo to persist an ecore model to a database.

My environment is JPA, Eclipselink in Glassfish 3.1, Teneo 1.2, Oracle 10g.
It's working fine as long as I'm working with a junit test. But on deploying this in the container, I get the following Exception on loading an entity:

Caused by: java.lang.ClassCastException: org.eclipse.persistence.internal.indirection.UnitOfWorkQuery ValueHolder cannot be cast to org.eclipse.emf.teneo.eclipselink.EmfOwnedValueHolder
at org.eclipse.emf.teneo.eclipselink.EmfTransparentIndirectionP olicy.setAttributeOwner(EmfTransparentIndirectionPolicy.java :42)
at org.eclipse.emf.teneo.eclipselink.EmfCollectionAdjuster.conf igureEListMapping(EmfCollectionAdjuster.java:113)
at org.eclipse.emf.teneo.eclipselink.EmfCollectionAdjuster.conf igureEmfCollectionMappings(EmfCollectionAdjuster.java:74)
at org.eclipse.emf.teneo.eclipselink.EmfCollectionAdjuster.post Clone(EmfCollectionAdjuster.java:43)
at org.eclipse.persistence.descriptors.DescriptorEventManager.n otifyListener(DescriptorEventManager.java:680)
at org.eclipse.persistence.descriptors.DescriptorEventManager.n otifyListeners(DescriptorEventManager.java:719)
at org.eclipse.persistence.descriptors.DescriptorEventManager.e xecuteEvent(DescriptorEventManager.java:199)
at org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteDeferredEvents(AbstractSession.java:1189)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.clo neAndRegisterObject(UnitOfWorkImpl.java:1009)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildWorkingCopyCloneNormally(ObjectBuilder.java:628)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildObjectInUnitOfWork(ObjectBuilder.java:565)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildObject(ObjectBuilder.java:497)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildObject(ObjectBuilder.java:456)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.buildOb ject(ObjectLevelReadQuery.java:723)
at org.eclipse.persistence.queries.ReadAllQuery.registerResultI nUnitOfWork(ReadAllQuery.java:742)
at org.eclipse.persistence.queries.ReadAllQuery.executeObjectLe velReadQuery(ReadAllQuery.java:423)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute DatabaseQuery(ObjectLevelReadQuery.java:1080)
at org.eclipse.persistence.queries.DatabaseQuery.execute(Databa seQuery.java:808)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute (ObjectLevelReadQuery.java:1040)
at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAll Query.java:383)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute InUnitOfWork(ObjectLevelReadQuery.java:1126)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.int ernalExecuteQuery(UnitOfWorkImpl.java:2842)
at org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1521)
at org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1503)
at org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1477)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeRea dQuery(EJBQueryImpl.java:484)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultL ist(EJBQueryImpl.java:741)
at com.siemens.energy.td.objmodel.server.persistence.db.ModelEl ementDao.findAllElements(ModelElementDao.java:61)
at com.siemens.energy.td.objmodel.server.persistence.db.Persist enceFacadeDB.findAllRealWorldObjects(PersistenceFacadeDB.jav a:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.glassfish.ejb.security.application.EJBSecurityManager.ru nMethod(EJBSecurityManager.java:1052)
at org.glassfish.ejb.security.application.EJBSecurityManager.in voke(EJBSecurityManager.java:1124)
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseCo ntainer.java:5367)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.jav a:619)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.in vokeNext(InterceptorManager.java:801)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(Sessi onBeanInterceptor.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor. intercept(InterceptorManager.java:862)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.in vokeNext(InterceptorManager.java:801)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.d oAround(SystemInterceptorProxy.java:162)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.a roundInvoke(SystemInterceptorProxy.java:144)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor. intercept(InterceptorManager.java:862)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.in vokeNext(InterceptorManager.java:801)
at com.sun.ejb.containers.interceptors.InterceptorManager.inter cept(InterceptorManager.java:371)
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContain er.java:5339)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer .java:5327)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invok e(EJBLocalObjectInvocationHandler.java:214)


The persistence context for unit test is the following:
<persistence-unit name="esoa" transaction-type="RESOURCE_LOCAL">
<property name="eclipselink.session.customizer"
value="org.eclipse.emf.teneo.eclipselink.EmfSessionCustomizer " />
<!-- for oracle -->
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@server:1521:service" />
<property name="javax.persistence.jdbc.user" value="OBJMODEL" />
<property name="javax.persistence.jdbc.password" value="pwd" />
<property name="eclipselink.logging.level" value="FINE" />
<property name="eclipselink.logging.session" value="true"/>
<property name="eclipselink.target-database" value="Oracle"/>
<property name="eclipselink.jdbc.batch-writing" value="Oracle-JDBC"/>
</properties>
</persistence-unit>

An here comes the persistence unit for Container Access:
<persistence-unit name="jdbc/objmodelDB">
<jta-data-source>jdbc/objmodel</jta-data-source>
<properties>
<property name="eclipselink.session.customizer"
value="org.eclipse.emf.teneo.eclipselink.EmfSessionCustomizer " />

<!-- for oracle -->
<property name="eclipselink.logging.level" value="FINE" />
<property name="eclipselink.logging.session" value="true"/>
<property name="eclipselink.target-database" value="Oracle"/>
<property name="eclipselink.jdbc.batch-writing" value="Oracle-JDBC"/>
</properties>
</persistence-unit>

Does anyone has an idea?

Chears
Oliver
Possible QuickFix? [message #800673 is a reply to message #658647] Fri, 17 February 2012 10:42 Go to previous messageGo to next message
Bernhard Anzeletti is currently offline Bernhard AnzelettiFriend
Messages: 17
Registered: July 2011
Location: Austria
Junior Member
Hi,

I've encountered a similar problem and could temporarily fix it by manually changing the fetch attribute of the relations from "LAZY" to "EAGER" (in the generated ORM.xml). Unfortunatly, this does not solve the problem, because I still want some relations to be fetched lazily. But it may help a little.

Kind regards
Bernhard

BTW, the full extend of this problem seems to me that as long as I stay within the same entity manager, everything works as expected, even when relations get fetched lazily. As soon as I inject the EntityManager into a SFSB which itself gets injected into a CDI bean with conversation scope, thigs get messy when I initilize the SECOND conversation with a NEW SFSB with a NEW EntityManager. However, as long as the CDI bean is SessionScoped, I do not face this problem. Strange indeed...
Re:Bugzilla link [message #811416 is a reply to message #658647] Fri, 02 March 2012 10:15 Go to previous message
Bernhard Anzeletti is currently offline Bernhard AnzelettiFriend
Messages: 17
Registered: July 2011
Location: Austria
Junior Member
I've also found the following post on this topic:
(I cannot use links until I have posted more than 25 messages)

www.eclipse.org/forums/index.php/m/704616/#msg_704616
Previous Topic:bundle "xx" cannot be resolved
Next Topic:Converting URI to URL and plus (+) character
Goto Forum:
  


Current Time: Sat Apr 27 03:38:14 GMT 2024

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

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

Back to the top