2016-12-29 78 views
0

它只是刪除任何具有obj的id的對象,還是它首先引用它的所有屬性?Hibernate如何刪除(obj)一個對象?

例如,假設我想刪除TransactionRequest transactionRequest TR1與

id = 25, amount = 311, client_id = 13 

它首先要確保所有這些屬性的檢查,還是隻是刪除任何TransactionRequest有25的ID?

回答

0

有關刪除只有你知道的對象的條件。

如果對於您來說足夠了id字段,您可以繼續,如果您想擴展您的條件(通過其他字段,如amount和client_id,您可以執行此操作)。

要刪除一個對象,你可以按照兩種方式(我用你的TransactionRequest對象爲例):

第一:

通過查詢獲取對象並將其刪除:

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

第二:

寫刪除查詢

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

兩種方法之間的區別:

如果使用第一種方式,你將保證刪除您對象,並設置與級聯條款

如果您映射數據使用第二種方法,如果你的對象中有一個set/list/bag映射,你不能刪除你的對象

+1

再一個注意:所有批量操作(從...中刪除)繞過攔截器和事件監聽器和第一級緩存。 – idmitriev

+0

@ igor-dmitriev:是的,你是對的 –