openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Csaba Tűz (Updated) (JIRA) <j...@apache.org>
Subject [jira] [Updated] (OPENJPA-2074) Calling em.persist(...) on simple entity without relations, with null primary key, @GeneratedValue results in InvalidStateException, complaining about non-default primary key.
Date Sat, 12 Nov 2011 03:42:52 GMT

     [ https://issues.apache.org/jira/browse/OPENJPA-2074?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Csaba Tűz updated OPENJPA-2074:
-------------------------------

    Component/s: jpa
    
> 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
>          Components: jpa
>    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

       

Mime
View raw message