2016-12-29 77 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:是的,你是对的 –