如果我想删除一个实体与休眠我收到消息Removing a detached instance...
。我知道那是因为我的交易/会话已关闭。休眠 - 删除对象
目前我该如何做:如果查找对象,我打开一个事务,执行查找,提交,关闭事务。删除也是一样。 什么是删除的正确方法?我是否需要始终保持事务处于打开状态(稍后将删除作为查找执行)。或者我需要再次查找删除?
如果我想删除一个实体与休眠我收到消息Removing a detached instance...
。我知道那是因为我的交易/会话已关闭。休眠 - 删除对象
目前我该如何做:如果查找对象,我打开一个事务,执行查找,提交,关闭事务。删除也是一样。 什么是删除的正确方法?我是否需要始终保持事务处于打开状态(稍后将删除作为查找执行)。或者我需要再次查找删除?
你有2种选择:
会话保持打开更长时间,使加载的对象相同的会话可以将其删除 - 这真的取决于你的应用程序的架构。
可选择在删除调用之前重新加载对象。
您还可以创建并执行DELETE
查询,并使用WHERE
子句传递主键字段的值。在这种情况下,您不必重新连接您的实体。
如果删除“手动”,是否会丢失任何休眠功能?例如。 “级联”注释 - >如果我用查询来做,子女会被删除吗? – jan
级联在这种情况下不起作用,您必须手动控制它。 – eternay
@eternay:级联删除也可以在DDL级别指定。 – Olaf