Calling em.persist(...) on simple entity without relations, with null primary
key, @GeneratedValue results in InvalidStateException, complaining about
non-default primary key.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: OPENJPA-2074
URL: https://issues.apache.org/jira/browse/OPENJPA-2074
Project: OpenJPA
Issue Type: Bug
Affects Versions: 2.1.1
Environment: Windows 7, Apache Tomcat 5.5, Eclipse Indigo, OpenJPA
plugin handles enhancement, JPA facet, JAX-RS facet
Reporter: Csaba Tűz
Priority: Blocker
Simple entity without any relations, INT primary key, mapped to Long in POJO.
Entity annotated propery with @Id @GeneratedValue
DMBS: MySQL with JDBC connection.
I started tracking down the issue. I can't get accustomed with the code around
it, but I write my experience: (line numbers are based on source release 2.1.1)
org.apache.openjpa.kernel.StateManagerImpl:
- Line 2966: It seems that the method call results in my entity's id field
being assigned with a generated value.
- Line 2967: Then in the for loop after that, we reach the same field (the
primary key) again at some point, and at
- Line 2968: assignField(i, true) eventually runs on the same code which
assigned the Id the first time, which freaks out, as the field value is already
set at this point.
org.apache.openjpa.util.ApplicationIds:481 (seems to be a utility method for me)
I cannot investigate further, however I am pretty confident that this is a bug
somewhere in the logic, maybe inside StateManagerImpl#assignField method. I
believe org.apache.openjpa.util.ApplicationIds:481 should not be invoked the
second time, as it's not idempotent.
The exception message:
Primary key field org.inception.teacher4u.persistence.entity.User.userid of
org.inception.teacher4u.persistence.entity.User@635e98be has non-default value.
The instance life cycle is in PNewState state and hence an existing non-default
value for the identity field is not permitted. You either need to remove the
@GeneratedValue annotation or modify the code to remove the initializer
processing.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira