[
https://issues.apache.org/jira/browse/OPENJPA-1804?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on OPENJPA-1804 started by Donald Woods.
> 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
> Assignee: Donald Woods
> Fix For: 2.1.0
>
>
> 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.