如果我想删除带有hibernate的实体,我会收到消息Removing a detached instance...
。我理解这是因为我的交易/会话已经关闭。
目前我是如何做到的:如果我查找一个对象,我打开一个事务,执行查找,提交,关闭事务。删除相同。 什么是正确的删除方式?我是否需要始终保持我的事务处于打开状态(删除在查找后的某个时间执行)。或者我是否需要再次查找删除?
答案 0 :(得分:1)
您有两个选择:
保持会话打开的时间更长,以便加载对象的同一会话可以删除它 - 这实际上取决于应用程序的体系结构。
替代方案在删除调用之前重新加载对象。
答案 1 :(得分:1)
您还可以使用DELETE
子句创建并执行WHERE
查询,并传递主键字段的值。在这种情况下,您不必重新附加您的实体。