并行优化锁中的JPA flush()

并行优化锁中的JPA flush(),jpa,entitymanager,flush,optimistic-locking,Jpa,Entitymanager,Flush,Optimistic Locking,我对entityManager中的flush()方法有问题。在我的应用程序中,我正在修改对象,然后我调用em.flush(),但我不提交()更改,同时第二个用户正在修改同一个对象,最后他也调用em.flush(),我希望他此时会得到OptimisticLockException,但不会。只有当我提交第一个用户所做的更改时,我才会得到异常。有人能给我解释一下吗? 对象的已版本化,实体管理器是会话范围 事务独立运行。这就是问题所在。好的,但问题是,当第二个用户刷新时,他的应用程序将被释放(您无法执行

我对entityManager中的flush()方法有问题。在我的应用程序中,我正在修改对象,然后我调用em.flush(),但我不提交()更改,同时第二个用户正在修改同一个对象,最后他也调用em.flush(),我希望他此时会得到OptimisticLockException,但不会。只有当我提交第一个用户所做的更改时,我才会得到异常。有人能给我解释一下吗?
对象的已版本化,实体管理器是会话范围

事务独立运行。这就是问题所在。好的,但问题是,当第二个用户刷新时,他的应用程序将被释放(您无法执行任何操作,只需挂起、挂起),直到第一个用户提交其更改,然后第二个用户获得OptimisticLockExceptionFrocking,这正是它应该做的。在提交第一个事务之前,第二个事务中的insert/update无法完成,因为两个事务都试图触及同一行。因此,在调用flush之前,是否有任何方法可以在JPA中检查entity isDirty。我想通知第二个用户,这个实体正在被另一个用户修改?