У меня есть @Stateless
-Bean, который выполняет некоторые операции с БД в одном методе
public void doOperation(){
User u1 = createNewUser()
User u2 = createNewUser()
User updated = mergeUser(u1,u2) // just as an example
// should write to database now!
otherBlockingOperation()
}
Однако изменения не будут видны в базе данных до завершения операции блокировки и, следовательно, не будут видны во внешнем интерфейсе.
Я думал, что это потому, что транзакция не зафиксирована, пока otherBlockingOperation()
не будет завершено. Затем я завернул otherBlockingOperation()
в поток, который снова не работал.
Однако я думаю, что настоящая проблема - merge
, которая обновит сущность только после завершения метода. Как я могу изменить значения объекта мгновенно?
Edit:
@PersistanceContext
private EntityManager em;
mergeUser(T entity){
em.merge(entity);
em.flush();
}