2016-11-27 1 views
0

Ich versuchte @IdClass für diese und regelmäßige @Version Anmerkung auf dem Versionsfeld verwenden, aber ich halte den Fehler bekommen:Tabelle mit zusammengesetzten Primärschlüsseln und Versionsfeld in JPA

OptimisticLockException: Attempted to attach deleted instance type "class xxx" with oid "xxx". If the instance is new, the version field should be left to its default value

Nach dem EntityManager.merge (obj) Linie. Ich habe zwei PKs, die ganze Zahlen sind, so ist das Versionsfeld ... Ich benutze eine PK-Klasse, die die ID-Felder mit @IdClass (Pk.class) hat und der Setter und Getter für die IDs eine Instanz aufrufen die Pk-Klasse, die im Konstruktor erstellt wird. Ich verwende nicht @GeneratedId. Ich verwende Openjpa nicht Hibernate.

+0

Veröffentlichen Sie tatsächliche Klassen und den Code, den Sie verwenden, um die Fehlermeldung zu erhalten. Ohne das ist es schwer zu verstehen, was Sie tun ... –

Antwort

1

Wahrscheinlich Ihre App. ändert das Versionsfeld. Es sollte nie eingestellt werden. Es ist eine technische Spalte. Ohne Code hier einfügen, ist nur eine Vermutung.

+0

Der Setter für die Version ist geschützt ... Auch privat versucht. Ich bekomme das nach der Zusammenführung. –

+0

Wenn Sie eine Ausnahme für optimistische Sperren erhalten, bedeutet dies, dass einige andere Transaktionen Änderungen an Entitäten vorgenommen haben, die Sie aktualisieren/löschen wollten. –

+0

Ich fand heraus, dass, obwohl der Setter für die Version privat ist, es einen Aufruf innerhalb der Klasse selbst für setVersion gibt. Danke, dass du in die richtige Richtung gelaufen bist. –

Verwandte Themen