2016-12-29 2 views
0

Löscht es einfach jedes Objekt mit der ID des Objekts, oder verweist es zuerst auf alle Eigenschaften?Wie löscht Hibernate ein Objekt (obj)?

Zum Beispiel sagen, ich will TransactionRequest transactionRequest löschen TR1 mit

id = 25, amount = 311, client_id = 13 

ist das erste all diese Eigenschaften stellen Sie sicher, Check-out, oder ist es einfach zu löschen, was TransactionRequest eine ID von 25 hat?

Antwort

0

Bedingung zum Löschen eines nur Ihnen bekannten Objekts.

Wenn für Sie das Feld id ausreicht, können Sie fortfahren, wenn Sie Ihre Bedingungen erweitern möchten (über andere Felder als Betrag und client_id können Sie es tun).

ein Objekt zu löschen, Sie zwei Möglichkeiten folgen kann (I Ihr TransactionRequest Objekt als Beispiel verwenden):

Die erste:

das Objekt durch Abfrage holen und löschen es:

Query q = session.createQuery("select from TransactionRequest t where t.id = :yourParam"); 
q.setString("yourParam, "25"); 
TransactionRequest toDelete = (TransactionRequest)q.uniqueResult(); 
session.delete(toDelete); 

Die zweite:

schreiben eine Löschabfrage

Query q = session.createQuery("delete from TransactionRequest where id = :yourParam"); 
q.setString("yourParam, "25"); 
q.executeUpdate(); 

Unterschied zwischen zwei Arten:

Wenn Sie die erste Art und Weise verwenden, werden Sie garantiert Ihr Objekt und Datenmengen mit Kaskade-Klausel Wenn Sie

abgebildet löschen Verwenden Sie die zweite Möglichkeit, können Sie nicht Ihr Objekt löschen, wenn Sie in Ihrem Objekt ein Set/Liste/Tasche zugeordnet

+1

noch ein Hinweis: alle Bulk-Operationen (löschen von ...) umgehen Interceptor und Event Listeners und erste Ebene Zwischenspeicher. – idmitriev

+0

@ igor-dmitriev: Ja, du hast Recht –

Verwandte Themen