Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
Oracle
Description
This problem was first reported via the dev mailing list starting with this message:
http://mail-archives.apache.org/mod_mbox/incubator-open-jpa-dev/200701.mbox/%3c89c0c52c0701021503q4bb23dcah248f6fa99c60564a@mail.gmail.com%3e
It seems that we are having a problem with processing byte[] fields as identity fields when running with Oracle. The same scenario works just fine with DB2 and Derby. Marc seems to think this is related to some special blob processing that is in place for Oracle.
The Exception (and message) that is thrown is:
Caused by: <4|true|0.0.0> org.apache.openjpa.persistence.ArgumentException: You cannot join on column "MNGD_ELEMENT.ME_GUID". It is not managed by a mapping that supports joins.
The complete call stack follows:
1500 TRACE [main] openjpa.MetaData - Resolving field "model.X509Cert@31116492.agent".
<4|true|0.0.0> org.apache.openjpa.persistence.ArgumentException : Errors encountered while resolving metadata. See nested exceptions for details.
at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:501)
at org.apache.openjpa.meta.MetaDataRepository.getMetaData (MetaDataRepository.java:283)
at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:338)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java :151)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:131)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java :211)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:181)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JPQLExpressionBuilder.java :174)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$1(JPQLExpressionBuilder.java:173)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate(JPQLExpressionBuilder.java:1658)
at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:52)
at org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(ExpressionStoreQuery.java:145)
at org.apache.openjpa.kernel.QueryImpl.newCompilation (QueryImpl.java:642)
at org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:623)
at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:589)
at org.apache.openjpa.kernel.QueryImpl.compileForExecutor (QueryImpl.java:651)
at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1464)
at org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.java:120)
at org.apache.openjpa.persistence.QueryImpl.execute (QueryImpl.java:202)
at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:251)
at jpa.test.LoadTestCase.testLoadAgents(LoadTestCase.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected (TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java :478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: <4|true|0.0.0> org.apache.openjpa.persistence.ArgumentException: You cannot join on column "MNGD_ELEMENT.ME_GUID". It is not managed by a mapping that supports joins.
at org.apache.openjpa.jdbc.meta.ClassMapping.assertJoinable (ClassMapping.java:235)
at org.apache.openjpa.jdbc.meta.strats.VerticalClassStrategy.map(VerticalClassStrategy.java:99)
at org.apache.openjpa.jdbc.meta.ClassMapping.setStrategy(ClassMapping.java:343)
at org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(RuntimeStrategyInstaller.java:52)
at org.apache.openjpa.jdbc.meta.MappingRepository.prepareMapping(MappingRepository.java:305)
at org.apache.openjpa.meta.MetaDataRepository.preMapping (MetaDataRepository.java:600)
at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:487)
... 33 more
NestedThrowables:
<4|true|0.0.0> org.apache.openjpa.persistence.ArgumentException : You cannot join on column "MNGD_ELEMENT.ME_GUID". It is not managed by a mapping that supports joins.
at org.apache.openjpa.jdbc.meta.ClassMapping.assertJoinable(ClassMapping.java:235)
at org.apache.openjpa.jdbc.meta.strats.VerticalClassStrategy.map (VerticalClassStrategy.java:99)
at org.apache.openjpa.jdbc.meta.ClassMapping.setStrategy(ClassMapping.java:343)
at org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(RuntimeStrategyInstaller.java :52)
at org.apache.openjpa.jdbc.meta.ClassMapping.resolveMapping(ClassMapping.java:768)
at org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1569)
at org.apache.openjpa.meta.MetaDataRepository.processBuffer (MetaDataRepository.java:654)
at org.apache.openjpa.meta.MetaDataRepository.resolveMapping(MetaDataRepository.java:615)
at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:493)
at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:283)
at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:338)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData (JPQLExpressionBuilder.java:151)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:131)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData (JPQLExpressionBuilder.java:211)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:181)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType (JPQLExpressionBuilder.java:174)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$1(JPQLExpressionBuilder.java:173)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate(JPQLExpressionBuilder.java :1658)
at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:52)
at org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(ExpressionStoreQuery.java:145)
at org.apache.openjpa.kernel.QueryImpl.newCompilation (QueryImpl.java:642)
at org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:623)
at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:589)
at org.apache.openjpa.kernel.QueryImpl.compileForExecutor (QueryImpl.java:651)
at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1464)
at org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.java:120)
at org.apache.openjpa.persistence.QueryImpl.execute (QueryImpl.java:202)
at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:251)
at jpa.test.LoadTestCase.testLoadAgents(LoadTestCase.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected (TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java :478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
<0|true|0.0.0> org.apache.openjpa.persistence.PersistenceException: null
at org.apache.openjpa.jdbc.meta.ClassMapping.assertStrategy(ClassMapping.java:954)
at org.apache.openjpa.jdbc.meta.ClassMapping.isPrimaryKeyObjectId( ClassMapping.java:920)
at org.apache.openjpa.jdbc.meta.ClassMapping.isForeignKeyObjectId(ClassMapping.java:284)
at org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.initialize(RelationFieldStrategy.java :189)
at org.apache.openjpa.jdbc.meta.FieldMapping.initializeMapping(FieldMapping.java:483)
at org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:402)
at org.apache.openjpa.jdbc.meta.ClassMapping.initializeMapping (ClassMapping.java:830)
at org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1574)
at org.apache.openjpa.meta.MetaDataRepository.resolveMapping(MetaDataRepository.java:624)
at org.apache.openjpa.meta.MetaDataRepository.resolve (MetaDataRepository.java:493)
at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:283)
at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:338)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:151)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:131)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:211)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java :181)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JPQLExpressionBuilder.java:174)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$1(JPQLExpressionBuilder.java:173)
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate(JPQLExpressionBuilder.java:1658)
at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:52)
at org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation (ExpressionStoreQuery.java:145)
at org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:642)
at org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:623)
at org.apache.openjpa.kernel.QueryImpl.compileForCompilation (QueryImpl.java:589)
at org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:651)
at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1464)
at org.apache.openjpa.kernel.DelegatingQuery.getOperation (DelegatingQuery.java:120)
at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:202)
at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:251)
at jpa.test.LoadTestCase.testLoadAgents (LoadTestCase.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect (TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.java:196)