【问题标题】:Hibernate - delete objects休眠 - 删除对象
【发布时间】:2013-05-25 20:42:14
【问题描述】:

如果我想通过休眠删除一个实体,我会收到消息Removing a detached instance...。我明白那是因为我的交易/会话已关闭。

目前我是怎么做的:如果我查找一个对象,我打开一个事务,进行查找,提交,关闭事务。删除也是一样。 删除的正确方法是什么?我是否需要一直保持我的事务打开(删除是在稍后作为查找执行的)。还是我需要再次查找删除?

【问题讨论】:

    标签: java hibernate jpa transactions entitymanager


    【解决方案1】:

    你有两个选择:

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

    在您的删除调用之前重新加载对象。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 如果“手动”删除,我是否会丢失任何休眠功能。例如。 “级联”注释 -> 如果我使用查询进行操作,孩子会被删除吗?
      • 这种情况下级联不起作用,您必须手动控制它。
      • @eternay:级联删除也可以在DDL级别指定。
      • 当然,但我们在谈论“休眠功能”。
      猜你喜欢
      • 2011-04-12
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多