[ https://issues.apache.org/jira/browse/OPENJPA-1804?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12912924#action_12912924 ]
Willis Blackburn commented on OPENJPA-1804: ------------------------------------------- I think that I just made things more confusing! Referring to the documentation, I believe that I am using the strategy in section 2.4, "Enhancing Dynamically at Runtime." However as I mentioned, I did have to set openjpa.RuntimeUnenhancedClasses=supported, which is only covered in section 2.5, "Omitting the JPA Enhancer." So maybe I'm not using the enhancer? By the way I'm using the Java 6 that Apple supplies with OS X, if that matters. > NPE in MappingInfo.java line 1514 > --------------------------------- > > Key: OPENJPA-1804 > URL: https://issues.apache.org/jira/browse/OPENJPA-1804 > Project: OpenJPA > Issue Type: Bug > Components: Enhance, UnenhancedClasses, usability > Affects Versions: 2.0.1 > Reporter: Willis Blackburn > > I am encountering a NPE at MappingInfo.java line 1514. I'm sorry I don't > have time to prepare a test case right now. I'm not even 100% sure what is > causing the problem, but it seems to be something like this: > I have classes Organization, Group, User, and AddressBook. > Group has a reference (many-to-one) to Organization. > I'm using field-level access and the Java 6 runtime enhancer. (NOT the > build-time enhancer or the agent.) > In ManagedClassSubclasser.prepareUnenhancedClasses, the code receives a list > of Class objects--the ones in persistence.xml. They are not in the same > order as they are in persistence.xml, but I don't know if that's important. > The first one is Group. During the processing of Group, the code invokes > ClassMapping.setTable to set the table name, which is "group_table." This > comes from the @Table annotation of Group. So far, so good. Then the code > does some additional processing on the relationship mappings of Group, which > include the reference to Organization. During the processing of that > relationship, the code calls MappingInfo.mergeJoinColumn. On line 1367, the > method calls rel.getTable. The "rel" variable points to the ClassMapping for > Organization. Remember that prepareUnenhancedClasses hasn't gotten to > Organization yet--it's still working on Group--and so I assume that this > Organization mapping was created on-demand. However, rel.getTable returns > null. The Organization class has a @Table attribute, and I can see that the > table name has been loaded in the ClassMappingInfo instance attached to the > ClassMapping for Organization, however the table name has not yet been copied > from ClassMappingInfo to ClassMapping. Later, the mergeJoinColumn method > attempts to dereference the null table name and generates the NPE. > Bottom line: When using the Java 6, runtime enhancer, if class A has a > reference to class B, and both classes have @Table annotations (at least), > and class A is processed first, then it produces a NPE. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.