У меня несколько пользователей. Чтобы предотвратить параллелизм, я пишу что-то вроде этого:Как сохранить и обновить в той же транзакции
@EJB
PersistenceManagerRemote persistenceManager;
persistenceManager.lock(decidableEntity, LockModeType.READ);
persistenceManager.refresh(decidableEntity);
это сработало для меня. Однако, если я что-то упорствую, а затем я вызываю этот код в той же транзакции, то я получил ошибку en.
javax.persistence.PersistenceException: org.hibernate.HibernateException: this instance does not yet exist as a row in the database
Когда я сохраняю объект, контекст базы данных не выполняется до завершения транзакции. Поэтому, когда я обновляюсь, он пытается найти объект в базе данных, поэтому возникает ошибка. У тебя есть решение? Я не могу разделить на две транзакции. Я должен также рассмотреть возможность параллелизма. Что я могу сделать?
flush не записывается в базу данных. он просто пытается писать. – Iguramu
Да, я это знаю. Я изменил слово «persist» на «write», чтобы сделать его более ясным. –