org.hibernate.NonUniqueObjectException
Habe ich eine Fehlermeldung, wenn ich ein Objekt löschen möchten aus der Datenbank. Der Fehler ist:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.cartif.database.ApplicationField#asd]
Um ein Objekt zu löschen ich:
public static void delete(Object o){
if(session == null) createSession();
Transaction tx = session.beginTransaction();
tx.begin();
session.delete(o);
tx.commit();
}
Mir beim Aufruf dieser Methode mit einem Objekt, ich erhalten den Fehler. Wenn ich Debuggen der Anwendung die exception geworfen wird in tx.begin(); line.
Auf Datenbank in diesem Objekt ist einzigartig, wie ich zeigen in den Spalten:
name deviceid
"asd" 1
"ElectricalConsumption" 1
"Energy" 1
Warum ist das passiert?
Vielen Dank im Voraus!
Du musst angemeldet sein, um einen Kommentar abzugeben.
NonUniqueObjectException wird ausgelöst, wenn ein Objekt bereits im Zusammenhang mit der Sitzung mit der gleichen id (primary key), die Sie versuchen, zu verknüpfen mit session.
Diese Regel hat nichts zu tun mit dem löschen
method
sich selbst und hat mehr zu tun mit der Kontext, in dem das löschen aufgerufenÜberprüfen Sie den Ort, wo das löschen aufgerufen. Überprüfen Sie für jede mögliche Duplikate von Objekten in dem Ort, wo das löschen aufgerufen.
Diese Frage kann auch helfen.
session.flush()
. Sie können versuchen, verschmelzen Sie beide Objekte (wenn Sie festgestellt haben Sie, dass ist). Die Lösung ist vollständig abhängig vom Kontext.Dieser Fehler zeigt an, dass Sie geladen haben, das gleiche Objekt (hier gleichen impliziert, dass beide Objekte haben die gleiche Kennung-Wert) mehr als einmal in der gleichen Sitzung. Es hat nichts zu tun mit der Einzigartigkeit in der Datenbank.