JPA1 allows objects of classes to be versioned. The version is typically used as a way of detecting if the object has been updated by another thread or EntityManager since retrieval using the current EntityManager - for use by Optimistic Transactions. JPA1s mechanism for versioning of objects in RDBMS datastores is to mark a field of the class to store the version. The field must be Integer/Long based. With JPA1 you can specify the details of this version field as follows.
<entity name="mydomain.User">
<attributes>
<id name="id"/>
<version name="version"/>
</attributes>
</entity>
or alternatively using annotations
@Entity
public class User
{
@Id
long id;
@Version
int version;
...
}The specification above will use the "version" field for storing the version of the object. DataNucleus will use a "version-number" strategy for populating the value. |