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:是的,你是对的 –