JPA合并未按预期工作

JPA合并未按预期工作,jpa,openjpa,Jpa,Openjpa,我试图用Openjpa作为ORM工具在EJB应用程序中实现事务管理 我试图实现这样一个场景:如果一个实体的db更新操作失败,那么同一事务中所有其他实体的db操作都失败 也可以回滚。所以我有一个实体A,我显式地将它的一个不可为null的字段设置为null,并为此实体调用entitymanager.merge方法。我预计由于不可为null的约束,db操作将失败,并引发PersistenceException。但这种情况不会发生,尽管A的状态也不会持续。 但若我首先使用A的id调用find,然后调用m

我试图用Openjpa作为ORM工具在EJB应用程序中实现事务管理

我试图实现这样一个场景:如果一个实体的db更新操作失败,那么同一事务中所有其他实体的db操作都失败 也可以回滚。所以我有一个实体A,我显式地将它的一个不可为null的字段设置为null,并为此实体调用entitymanager.merge方法。我预计由于不可为null的约束,db操作将失败,并引发PersistenceException。但这种情况不会发生,尽管A的状态也不会持续。 但若我首先使用A的id调用find,然后调用merge,我会得到异常


我曾经认为,单靠合并就足以解决所有问题。为什么我需要在合并之前显式调用find?

在调用em.flush或提交关联事务之前,不需要将更改同步到数据库。

也许,显示一些代码。在调用merge之前显示调用find的代码,以及另一个不调用find的代码。