0
它只是刪除任何具有obj的id的對象,還是它首先引用它的所有屬性?Hibernate如何刪除(obj)一個對象?
例如,假設我想刪除TransactionRequest transactionRequest
TR1與
id = 25, amount = 311, client_id = 13
它首先要確保所有這些屬性的檢查,還是隻是刪除任何TransactionRequest
有25的ID?
它只是刪除任何具有obj的id的對象,還是它首先引用它的所有屬性?Hibernate如何刪除(obj)一個對象?
例如,假設我想刪除TransactionRequest transactionRequest
TR1與
id = 25, amount = 311, client_id = 13
它首先要確保所有這些屬性的檢查,還是隻是刪除任何TransactionRequest
有25的ID?
有關刪除只有你知道的對象的條件。
如果對於您來說足夠了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映射,你不能刪除你的對象
再一個注意:所有批量操作(從...中刪除)繞過攔截器和事件監聽器和第一級緩存。 – idmitriev
@ igor-dmitriev:是的,你是對的 –