我有多个用户。为了防止并发,我写了这样的东西:
@EJB
PersistenceManagerRemote persistenceManager;
persistenceManager.lock(decidableEntity, LockModeType.READ);
persistenceManager.refresh(decidableEntity);
这对我有用。但是,如果我坚持一些东西,然后我在同一个事务中调用这个代码,那么我就会出错。
javax.persistence.PersistenceException: org.hibernate.HibernateException: this instance does not yet exist as a row in the database
当我持久化一个实体时,数据库上下文在事务完成之前不会生效。因此,当我刷新时,它会尝试在数据库中查找实体,因此会出现错误。你有解决方案吗?我不能分成两个交易。我还应该考虑并发性。我能做些什么?