2017-02-01 2 views
-1

ich ein Modell-Datei, deren Code haben, ist:Erste HibernateOptimisticLocking Ausnahme, während ein Objekt Speichern

Signature.java

public class Signature implements Serializable { 
    private String id; 
    private int version; 
    private byte[] signatureImage; 
    private String signatureImageName; 
    private String name; 
    private String title; 
    // the getters setters methods 
} 

Hier in diesem Objekt, das ich die signatureImage von jsp mit MultipartFile bin immer und dann Speichern der Bytes in diesem Feld. Ich spare dieses Objekt aus meinem Controller und daohibernate Code ist wie folgt:

Session session = getSessionFactory().getCurrentSession(); 
session.saveOrUpdate(signature); 

Jetzt habe ich eine Störung erhalte:

: Während Anfrage Handhabung: -> HibernateOptimisticLockingFailureException, e :: org.springframework .orm.hibernate4.HibernateOptimisticLockingFailureException: Objekt der Klasse com.model.Signature mit dem Bezeichner []: optimistic locking failed; verschachtelte Ausnahme ist org.hibernate.StaleObjectStateException: Zeile wurde aktualisiert oder durch eine andere Transaktion gelöscht (oder nicht gespeicherte Wertzuordnung falsch war): [com.model.Signature #]

Nun ist dies einziger Aufruf der saveOrUpdate Abfrage keine Threads dann bekomme ich auch diesen Fehler.

+0

Das ist genau das, was es sagt: ein anderer Dienst modifiziert diesen Datensatz in der Datenbank. Daher passen die Versionsinformationen nicht und Ihr Update wird abgelehnt. Sie müssen analysieren, was diesen Datensatz geändert hat. –

+0

SIR, mein Update funktioniert gut. Wenn ich einen Datensatz aktualisiere, kommt kein Fehler, wenn ich einen neuen Datensatz speichere, dann wird dieser Fehler angezeigt. Eigentlich habe ich den Löschvorgang auch auf dieser Tabelle durchgeführt. Kann dieser Löschvorgang diesen Fehler verursachen? –

+0

Verwenden Sie vielleicht einen Primärschlüssel in Ihrem neuen Datensatz, der bereits existiert? –

Antwort

0

Haben Sie den Fehler hier. Die ID die kam war nicht null es war "" (leer).

Deshalb wurde versucht, den Datensatz nicht zu aktualisieren.

Also, indem Sie den Wert von id auf null geändert haben, wurde der Datensatz gespeichert.

Dank

Verwandte Themen