With EclipseLink used as the JPA provider, the following error message “Null primary key encountered in unit of work clone” may appear if the value 0 is used for a field which is a primary key.
To resolve it, a few solutions :
1) start your primary key values from 1 instead of 0, which in my opinion is the best solution.
2) add the following annotation to the entity :
import javax.persistence.Entity;
import javax.persistence.Table;
import org.eclipse.persistence.annotations.IdValidation;
import org.eclipse.persistence.annotations.PrimaryKey;
/**
* The persistent class for the HOUSE database table.
*
*/
@Entity
@Table(name = "HOUSE")
@PrimaryKey(validation=IdValidation.NULL)
public class House implements Serializable {
...
}
3) add the following property to the persistence.xml file :
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="myUnit">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/MySource</jta-data-source>
<class>com.blabla.myEntity</class>
<properties>
<property name="eclipselink.allow-zero-id" value="true"/>
</properties>
</persistence-unit>
</persistence>
Links :
http://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_primarykey.htm