[
https://issues.apache.org/jira/browse/OPENJPA-95?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Richard Zowalla resolved OPENJPA-95.
------------------------------------
Resolution: Won't Fix
Closing as obsolete during backlog cleanup: MappingRepository.java:891-898
picks the non-joinable MaxEmbeddedByteArrayFieldStrategy only when
maxEmbeddedBlobSize != -1, and OracleDictionary.java:336-338 sets it to -1 for
drivers >= 11.2, so the failure only happens with pre-11.2 Oracle drivers.
Please reopen if this still happens with OpenJPA 4.x.
> @IdClass annotation for id field type of byte[]
> -----------------------------------------------
>
> Key: OPENJPA-95
> URL: https://issues.apache.org/jira/browse/OPENJPA-95
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc
> Environment: Oracle
> Reporter: Kevin W. Sutter
> Assignee: Marc Prud'hommeaux
> Priority: Major
> Attachments: Agent.java, Guid.java, ManagedElement.java
>
>
> 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/%[email protected]%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
> "[email protected]".
> <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)
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)