【问题标题】:Remove should throw Exception when remove is not possible当无法移除时,移除应该抛出异常
【发布时间】:2014-06-16 14:58:06
【问题描述】:

我使用的是 Hibernte 4.3.x。

如果我尝试从 DB = EM.remove(entity) 中删除(删除)一个对象,如果 Hibernate 在实体管理器上下文中的托管对象中找到引用,该对象将保留在 DB 中(删除未执行)。 (我猜是为了避免数据不一致)

是否有可能通过配置/设置(到目前为止我一无所获)事务抛出一个异常,由于找到的引用而无法删除?

(这与级联/删除无关)

编辑: 示例

EM.remove(ObjectA.getObjectB());

如果交易被执行。所有接缝都很好,没有异常。作为“初学者”,我希望 ObjectB 被删除。但事实并非如此。它还在那里。 EM“看到”仍然存在从 ObjectA 到 ObjectB 的引用并且不执行删除。

如果我对 EM 说它应该保留或删除某些东西,这是不可能的,我想知道这一点。

(我知道 ObjectA.setObjectB(null) 示例有效)

【问题讨论】:

  • 可能是你没有提交事务,尝试在事务边界执行这个操作。
  • @宙斯。在事务中调用删除。但不要收到有关该过程不成功的信息。如果我坚持一个对象并且这不成功,那么如果删除不成功,则会引发错误。你没有注意到这一点。然后想知道为什么数据仍然存在。
  • 它会抛出什么错误?

标签: java hibernate


【解决方案1】:

如果您的问题真的是关于是否无论如何都可以捕获异常...您可以使用以下内容:

try
{
  // your code...
  DB = EM.remove(entity)
}
catch(Exception e)
{
  System.out.println(e.printStackTrace());
}
catch(Throwable t)
{ // This one catches unchecked exceptions
  System.out.println(t.printStackTrace())
}

这可以为您提供有关正在发生的事情的更多信息...

【讨论】:

    猜你喜欢
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多