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

Entity enhancement fails while using EmbeddedId on a MappedSuperclass

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.9.7
    • kernel
    • None
    • openjpa 0.9.6

    Description

      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:
      --------------
      <persistence xmlns="http://java.sun.com/xml/ns/persistence"
      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">
      <persistence-unit name="TestService" transaction-type="RESOURCE_LOCAL">
      <class>test.A$A_PK</class>
      <class>test.A</class>
      <class>test.B</class>
      <properties>
      <property name="openjpa.Log" value="DefaultLevel=TRACE"/>

      <property name="openjpa.ConnectionUserName" value="test"/>
      <property name="openjpa.ConnectionPassword" value="test"/>
      <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/oam?useServerPrepStmts=false"/>
      <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
      </properties>
      </persistence-unit>
      </persistence>
      --------------

      Attachments

        1. test-case.zip
          2 kB
          Gokhan Ergul

        Activity

          People

            Unassigned Unassigned
            gergul Gokhan Ergul
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: