[ 
https://issues.apache.org/jira/browse/OPENJPA-95?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kevin Sutter updated OPENJPA-95:
--------------------------------

    Attachment: ManagedElement.java
                Guid.java
                Agent.java

> @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 Sutter
>         Assigned To: Marc Prud'hommeaux
>         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]
> 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 is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to