Uploaded image for project: 'OpenJPA'
  1. OpenJPA
  2. OPENJPA-95

@IdClass annotation for id field type of byte[]

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • jdbc
    • 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)

      Attachments

        1. ManagedElement.java
          2 kB
          Kevin W. Sutter
        2. Guid.java
          2 kB
          Kevin W. Sutter
        3. Agent.java
          3 kB
          Kevin W. Sutter

        Activity

          People

            mprudhom Marc Prud'hommeaux
            kwsutter Kevin W. Sutter
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: