Hello! We have the NPE shown below in a reproducible testcase (ZIP attached to this JIRA issue: https://issues.apache.org/jira/browse/OPENJPA-1141 <https://issues.apache.org/jira/browse/OPENJPA-1141> ).
We've reduced our complex intended target domain model (about 200+ Entities) to a simpler model with only 3 classes which illustrate the problem: You'll find attached a test project with a first entity which has a a OneToMany (with an ElementJoinColumns, but that shouldn't matter?) to a second entity has a ManyToOne to a third entity. The middle entity has a Composite ID Class including a ManyToOne as a key, which according to http://openjpa.apache.org/builds/1.2.0/apache-openjpa-1.2.0/docs/manual/ ref_guide_pc_oid.html#ref_guide_pc_oid_entitypk is supported, so this seems a bug in OpenJPA's mapping algos, somehow? Appreciate any ideas what we may be doing wrong, or bugfixes if this is indeed an OpenJPA Defect, as we suspect. Regards, Michael & Yann <openjpa-1.2.1-r752877:753278 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: null at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java :610) at org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:66 7) at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1492) at org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.j ava:123) at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:243) at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:29 4) at testcase.TestMappingProblem.doTest(TestMappingProblem.java:42) at testcase.TestMappingProblem.testIt(TestMappingProblem.java:20) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) 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 junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:2 13) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSe t(AbstractDirectoryTestSuite.java:140) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(Abstr actDirectoryTestSuite.java:127) at org.apache.maven.surefire.Surefire.run(Surefire.java:177) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(Suref ireBooter.java:345) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java :1009) Caused by: java.lang.NullPointerException at org.apache.openjpa.jdbc.meta.MappingInfo.mergeJoinColumn(MappingInfo.jav a:1400) at org.apache.openjpa.jdbc.meta.MappingInfo.createJoins(MappingInfo.java:12 06) at org.apache.openjpa.jdbc.meta.MappingInfo.createForeignKey(MappingInfo.ja va:968) at org.apache.openjpa.jdbc.meta.ValueMappingInfo.getTypeJoin(ValueMappingIn fo.java:104) at org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.map(RelationFi eldStrategy.java:157) at org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy(FieldMapping.java: 121) at org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(Ru ntimeStrategyInstaller.java:80) at org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping(FieldMapping.ja va:454) at org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:419) at org.apache.openjpa.jdbc.meta.ClassMapping.resolveNonRelationMappings(Cla ssMapping.java:869) at org.apache.openjpa.jdbc.meta.MappingRepository.prepareMapping(MappingRep ository.java:339) at org.apache.openjpa.meta.MetaDataRepository.preMapping(MetaDataRepository .java:662) at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.ja va:549) at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepositor y.java:308) at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepositor y.java:363) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JP QLExpressionBuilder.java:159) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaDat a(JPQLExpressionBuilder.java:139) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaDat a(JPQLExpressionBuilder.java:225) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaDat a(JPQLExpressionBuilder.java:195) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JP QLExpressionBuilder.java:188) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$600(JPQLExpr essionBuilder.java:69) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate (JPQLExpressionBuilder.java:1756) at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:56) at org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(E xpressionStoreQuery.java:153) at org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:658) at org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java: 639) at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java :605) ... 33 more ____________________________________________________________ This email and any files transmitted with it are CONFIDENTIAL and intended solely for the use of the individual or entity to which they are addressed. Any unauthorized copying, disclosure, or distribution of the material within this email is strictly forbidden. Any views or opinions presented within this e-mail are solely those of the author and do not necessarily represent those of Odyssey Financial Technologies SA unless otherwise specifically stated. An electronic message is not binding on its sender. Any message referring to a binding engagement must be confirmed in writing and duly signed. If you have received this email in error, please notify the sender immediately and delete the original.