Unexpected error when an Entity has multiple columns named id ("id" and "ID")
-----------------------------------------------------------------------------

                 Key: OPENJPA-1324
                 URL: https://issues.apache.org/jira/browse/OPENJPA-1324
             Project: OpenJPA
          Issue Type: Bug
          Components: kernel
         Environment: Win XP, MySQL 5.1.30
            Reporter: Rick Curtis


When doing some artistic testing I came across this problem when I had two 
fields named id (id and ID) in my Entity. I'm not sure if this is a valid 
usage, but I'm documenting this issue to revisit at a later date.

Note: The table that was generated by the Entity definition below had only one 
column named 'id'.

Scenario:
em1.getTransaction().begin();
em1.persist(new Book());
em1.getTransaction().commit();

@Entity
public class Book {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;
    private long ID;
....
}

Exception:
...
Caused by: <openjpa-2.0.0-SNAPSHOT-r422266:804085M fatal user error> 
org.apache.openjpa.persistence.ArgumentException: Attempt to assign id 
"main.Book-0" to new instance "main.Book-main.Book-0" failed; there is already 
an object in the L1 cache with this id. You must delete this object (in a 
previous transaction or the current one) before reusing its id.  This error can 
also occur when a horizontally or vertically mapped classes uses auto-increment 
application identity and does not use a hierarchy of application identity 
classes.
FailedObject: main.Book-main.Book-0
        at 
org.apache.openjpa.kernel.ManagedCache.commitNew(ManagedCache.java:240)
        at 
org.apache.openjpa.kernel.BrokerImpl.setStateManager(BrokerImpl.java:3990)
        at 
org.apache.openjpa.kernel.StateManagerImpl.commit(StateManagerImpl.java:1134)
        at 
org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java:2346)
        ... 6 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to