ClassCastException UnitOfWorkQueryValueHolder to EmfOwnedValueHolder [message #658647] |
Wed, 09 March 2011 06:40  |
Eclipse User |
|
|
|
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 05:42   |
Eclipse User |
|
|
|
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 05:15  |
Eclipse User |
|
|
|
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
|
|
|
Powered by
FUDForum. Page generated in 0.06045 seconds