我正在尝试使用Openjpa作为ORM工具在EJB应用程序中实现事务管理。
我正在尝试实现一个场景,如果某个实体的db更新操作失败,那么同一事务中所有其他实体的db操作
也回滚。所以我有一个实体A,我明确地将它的一个非可空字段设置为null并为该实体调用entitymanager.merge()
方法。我希望由于不可为空的约束,db操作将失败并且{ {1}}会被抛出。但是没有出现这种情况,尽管A的状态也没有持续存在。
但是,如果我先使用A的ID拨打PersistenceException
,然后拨打find()
,我会获得例外。
我曾经认为仅merge()
足以照顾所有人。为什么我需要在合并之前显式调用merge()
?
答案 0 :(得分:0)
在调用em.flush()或提交关联事务之前,不需要将更改同步到数据库。