【发布时间】: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) 示例有效)
【问题讨论】:
-
可能是你没有提交事务,尝试在事务边界执行这个操作。
-
@宙斯。在事务中调用删除。但不要收到有关该过程不成功的信息。如果我坚持一个对象并且这不成功,那么如果删除不成功,则会引发错误。你没有注意到这一点。然后想知道为什么数据仍然存在。
-
它会抛出什么错误?