Hibernate - 删除对象

时间:2013-05-30 10:09:38

标签: java hibernate jpa transactions entitymanager

如果我想删除带有hibernate的实体,我会收到消息Removing a detached instance...。我理解这是因为我的交易/会话已经关闭。

目前我是如何做到的:如果我查找一个对象,我打开一个事务,执行查找,提交,关闭事务。删除相同。 什么是正确的删除方式?我是否需要始终保持我的事务处于打开状态(删除在查找后的某个时间执行)。或者我是否需要再次查找删除?

2 个答案:

答案 0 :(得分:1)

您有两个选择:

保持会话打开的时间更长,以便加载对象的同一会话可以删除它 - 这实际上取决于应用程序的体系结构。

替代方案在删除调用之前重新加载对象。

答案 1 :(得分:1)

您还可以使用DELETE子句创建并执行WHERE查询,并传递主键字段的值。在这种情况下,您不必重新附加您的实体。