Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » EclipseLink » Spring Boot With Eclipselink - ClassCastException: $Proxy80 cannot be casted to OracleConnection(Oracle Objects as IN Parameters to Stored Procs - java.lang.ClassCastException: com.sun.proxy.$Proxy80 cannot be cast to oracle.jdbc.OracleConnection)
Spring Boot With Eclipselink - ClassCastException: $Proxy80 cannot be casted to OracleConnection [message #1724251] Mon, 22 February 2016 14:38 Go to next message
Srikanth Narisetty is currently offline Srikanth NarisettyFriend
Messages: 6
Registered: February 2016
Junior Member
I am developing a Spring Boot application with Eclipselink as JPA provider. I could make successful calls to stored procs and get Oracle objects (STRUCT, ARRAY) as OUT parameters. Even, I could pass one simple STRUCT as IN parameter. But, the point I started passing objects inside another objects as IN parameters, I faced below exception.
Tried to debug the code and found the connection initiated by Spring ORM is missing during the process of constructing objects inside another object. So, Eclipselink tried to get connection from pool but it a Proxy connection. any idea about this. Please help!

org.springframework.orm.jpa.JpaSystemException: java.lang.ClassCastException: com.sun.proxy.$Proxy80 cannot be cast to oracle.jdbc.OracleConnection; nested exception is javax.persistence.PersistenceException: java.lang.ClassCastException: com.sun.proxy.$Proxy80 cannot be cast to oracle.jdbc.OracleConnection
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:418)
at org.springframework.orm.jpa.DefaultJpaDialect.translateExceptionIfPossible(DefaultJpaDialect.java:122)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:654)
at RepositoryImpl$$EnhancerBySpringCGLIB$$9da0ae12.findEmployee(<generated>)
at RepositoryTest.testFindEmployee(WBSMasterRepositoryTest.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:254)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:193)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
Caused by: javax.persistence.PersistenceException: java.lang.ClassCastException: com.sun.proxy.$Proxy80 cannot be cast to oracle.jdbc.OracleConnection
at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:484)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:364)
at com.sun.proxy.$Proxy139.getResultList(Unknown Source)
at RepositoryImpl.findEmployee(WBSMasterRepositoryImpl.java:62)
at RepositoryImpl$$FastClassBySpringCGLIB$$3c54e5f7.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:718)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
... 31 more
Caused by: java.lang.ClassCastException: com.sun.proxy.$Proxy80 cannot be cast to oracle.jdbc.OracleConnection
at oracle.sql.TypeDescriptor.setPhysicalConnectionOf(TypeDescriptor.java:310)
at oracle.sql.TypeDescriptor.<init>(TypeDescriptor.java:106)
at oracle.sql.StructDescriptor.<init>(StructDescriptor.java:260)
at org.eclipse.persistence.platform.database.oracle.Oracle8Platform.createStruct(Oracle8Platform.java:276)
at org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.createStruct(DatabasePlatform.java:3147)
at org.eclipse.persistence.mappings.structures.ObjectRelationalDataTypeDescriptor.buildStructureFromRow(ObjectRelationalDataTypeDescriptor.java:335)
at org.eclipse.persistence.mappings.structures.ObjectRelationalDataTypeDescriptor.buildFieldValueFromNestedRow(ObjectRelationalDataTypeDescriptor.java:118)
at org.eclipse.persistence.mappings.structures.StructureMapping.buildCompositeRow(StructureMapping.java:80)
at org.eclipse.persistence.mappings.foundation.AbstractCompositeObjectMapping.writeFromObjectIntoRow(AbstractCompositeObjectMapping.java:317)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildRow(ObjectBuilder.java:1567)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildRow(ObjectBuilder.java:1555)
at org.eclipse.persistence.internal.databaseaccess.BindCallCustomParameter.convert(BindCallCustomParameter.java:115)
at org.eclipse.persistence.internal.databaseaccess.InParameterForCallableStatement.set(InParameterForCallableStatement.java:30)
at org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.setParameterValueInDatabaseCall(DatabasePlatform.java:2500)
at org.eclipse.persistence.platform.database.oracle.Oracle9Platform.setParameterValueInDatabaseCall(Oracle9Platform.java:525)
at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.prepareStatement(DatabaseCall.java:797)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:621)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:560)
at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:2055)
at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:570)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:242)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:299)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelect(DatasourceCallQueryMechanism.java:281)
at org.eclipse.persistence.queries.ResultSetMappingQuery.executeDatabaseQuery(ResultSetMappingQuery.java:316)
at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:904)
at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:803)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2896)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1857)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1839)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1804)
at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:258)
at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:473)
... 43 more
Re: Spring Boot With Eclipselink - ClassCastException: $Proxy80 cannot be casted to OracleConnection [message #1724366 is a reply to message #1724251] Tue, 23 February 2016 11:44 Go to previous message
Srikanth Narisetty is currently offline Srikanth NarisettyFriend
Messages: 6
Registered: February 2016
Junior Member
Writing a customized ServerPlatform and set it to PersistenceUnitProperties.TARGET_SERVER fixed this issue.
http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/p_target_server.htm
Previous Topic:Reusing Embeddable class - java.lang.OutOfMemoryError: Java heap space
Next Topic:Spring Boot + EclipseLink + Tomcat Connection Pool
Goto Forum:
  


Current Time: Fri Apr 26 08:42:29 GMT 2024

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

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

Back to the top