如果无法删除,则删除应抛出异常

时间:2014-06-16 14:58:06

标签: java hibernate

我正在使用Hibernte 4.3.x。

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

是否可以通过配置/设置(我到目前为止没有发现任何内容)该事务抛出异常,因为找到了引用而无法删除?

(这与级联/删除无关)

编辑: 示例

EM.remove(ObjectA.getObjectB());

如果交易已执行。所有接缝都没有异常抛出。作为一个初学者"我希望ObjectB被删除。但事实并非如此。它还在那里。 EM"见"仍然存在从ObjectA到ObjectB的引用,并且dosn不执行删除。

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

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

1 个答案:

答案 0 :(得分:0)

如果你的问题是关于你是否可以捕捉异常,无论如何......你可以使用以下内容:

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())
}

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