Will man über eine JPA-Query bei einer Entity auch das Version-Feld manuell aktualisieren, funktioniert das bei Eclipselink nicht (getestet mit Version 2.1.3).
Nehmen wir mal dieses einfache Entity:
@javax.persistence.Entity
@javax.persistence.Table(name = "FOO")
public class Foo {
@javax.persistence.Id
private Long id;
@javax.persistence.Version
private Integer version;
private String value;
...
}
Eine Update-Query in JPQL, welche die Felder value und version aktualisieren, würde wie folgt aussehen:
UPDATE Foo f SET f.value = :value, f.version = :version
Da der Standard nicht vorsieht, dass in diesem Fall die Version aktualisiert wird, muss laut Eclipselink-Doku das Feld in der Query explizit gesetzt werden. Leider funktioniert das bei Eclipselink nur beim ersten Update - danach wird immer wieder das alte Datum gesetzt.
Sofern das Ganze aber mit einer NativeQuery durchgeführt wird, gibt es keine Probleme.
UPDATE FOO f SET f.value = ?value, f.version = ?version