[ https://issues.apache.org/jira/browse/OPENJPA-146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12473911 ] Gokhan Ergul commented on OPENJPA-146: -------------------------------------- Alright, it did manifest itself in a different way as you guessed: java.lang.NullPointerException at org.apache.openjpa.jdbc.meta.strats.EmbedValueHandler.map(EmbedValueHandler.java:50) at org.apache.openjpa.jdbc.meta.strats.ObjectIdValueHandler.map(ObjectIdValueHandler.java:46) at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.map(HandlerStrategies.java:56) at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.map(HandlerFieldStrategy.java:77) at org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy(FieldMapping.java:117) ... Bit of debugging into the code: (EmbedValueHandler.java) protected void map(ValueMapping vm, String name, ColumnIO io, boolean adapt, List cols, List args) { // have to resolve embedded value to collect its columns vm.getEmbeddedMapping().resolve(vm.MODE_META | vm.MODE_MAPPING); ... vm .getEmbeddedMapping() returns null, since: (ValueMetaDataImpl.java) public ClassMetaData getEmbeddedMetaData() { if (_embeddedMeta == null && isEmbeddedPC()) addEmbeddedMetaData(); return _embeddedMeta; } and public boolean isEmbeddedPC() { return _decCode == JavaTypes.PC && isEmbedded(); } _decCode is JavaTypes.OID. JavaTypes.PC was possibly overwritten by: public boolean resolve(int mode) { ... // oid as primary key field? if (_decCode == JavaTypes.PC && isEmbedded() && _owner.isPrimaryKey() && _owner.getValue() == this) _code = _decCode = JavaTypes.OID; So I've changed public boolean isEmbeddedPC() { return _decCode == JavaTypes.PC && isEmbedded(); } to public boolean isEmbeddedPC() { return (_decCode == JavaTypes.PC || _decCode == JavaTypes.OID) && isEmbedded(); } seems to have fixed the problem, tho I'm not sure if it has any nasty sideeffects. Any comments? > Entity enhancement fails while using EmbeddedId on a MappedSuperclass > --------------------------------------------------------------------- > > Key: OPENJPA-146 > URL: https://issues.apache.org/jira/browse/OPENJPA-146 > Project: OpenJPA > Issue Type: Bug > Components: kernel > Environment: openjpa 0.9.6 > Reporter: Gokhan Ergul > Attachments: test-case.zip > > > Both buildtime and runtime class enhancement fail with the following error: > ... > 1339 TRACE [main] openjpa.Enhance - Enhancing type "class test.B". > Exception in thread "main" <0|false|0.9.6-incubating> org.apache.openjpa.util.GeneralException: null > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:350) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:3711) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:3661) > at org.apache.openjpa.enhance.PCEnhancer.main(PCEnhancer.java:3633) > Caused by: java.lang.NullPointerException > at org.apache.openjpa.enhance.PCEnhancer.enhanceObjectId(PCEnhancer.java:2745) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:338) > ... 3 more > Test code as follows: > test/A.java: > -------------- > package test; > import javax.persistence.*; > import java.io.Serializable; > @MappedSuperclass > abstract public class A { > @Embeddable > public static class A_PK implements Serializable { > @Basic > protected int id1; > > @Basic > protected String id2; > > public boolean equals (Object other) { > return false; > } > public int hashCode () { > return 0; > } > } > @EmbeddedId > protected A_PK pk; > @Basic > protected String val; > } > -------------- > test/B.java: > -------------- > package test; > import javax.persistence.Entity; > @Entity > public class B extends A { > } > -------------- > META-INF/persistence.xml: > -------------- > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" > version="1.0"> > > test.A$A_PK > test.A > test.B > > > > > > > > > > -------------- -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.