我正在使用Hibernte 4.3.x。
如果我尝试从DB = EM.remove(实体)中删除(删除)对象,则如果Hibernate在实体管理器上下文中的托管对象中找到引用,则该对象将保留在DB中(删除未执行)。 (为了避免数据不一致,我猜)
是否可以通过配置/设置(我到目前为止没有发现任何内容)该事务抛出异常,因为找到了引用而无法删除?
(这与级联/删除无关)
编辑: 示例
EM.remove(ObjectA.getObjectB());
如果交易已执行。所有接缝都没有异常抛出。作为一个初学者"我希望ObjectB被删除。但事实并非如此。它还在那里。 EM"见"仍然存在从ObjectA到ObjectB的引用,并且dosn不执行删除。
如果我对EM说它应该坚持或删除某些东西,这是不可能的,我想知道这一点。
(我知道ObjectA.setObjectB(null)示例有效)
答案 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())
}
这可以为您提供有关正在发生的事情的更多信息......