Issue Details (XML | Word | Printable)

Key: OPENJPA-146
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Unassigned
Reporter: Gokhan Ergul
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
OpenJPA

Entity enhancement fails while using EmbeddedId on a MappedSuperclass

Created: 14/Feb/07 12:00 PM   Updated: 01/Mar/07 02:13 AM
Return to search
Component/s: kernel
Affects Version/s: None
Fix Version/s: 0.9.7

Time Tracking:
Not Specified

File Attachments:
  Size
Zip Archive test-case.zip 2007-02-14 12:04 PM Gokhan Ergul 2 kB
Environment: openjpa 0.9.6

Resolution Date: 20/Feb/07 04:35 PM


 Description  « Hide
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>
--------------





 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
No work has yet been logged on this issue.