В моем приложении у меня есть процесс, который занимает некоторое время (30 секунд - 5 минут) и в течение этого времени манипулирует базой данных через JPA.Изменение поля объекта за одну транзакцию
Моя проблема заключается в том, что я хочу, чтобы установить состояние процесса его дб объекта:
void runProcess(Process process) {
process.setState("Started.");
em.merge(process);
... db manipulations
process.setState("First phase finished.");
em.merge(process);
... db manipulations
process.setState("Process finished.");
em.merge(process);
}
Проблема заключается в том, что только первое обновление происходит и другие остаются игнорируются.
я не получаю никаких ошибок и Hibernate журналов я могу видеть процесс обновления три раза:
Hibernate: update process set state=? where id=?
Но только первое обновление будет иметь место.
Спасибо.
Это то, о чем я думал. Но как я могу добиться его запуска в разных транзакциях? Я не могу предотвратить повторное использование текущей транзакции. Благодаря! –
Что вы используете для обработки транзакций? EJBs? Весна? Обычный API JPA? –
Весна и @Transactional (readOnly = false) аннотация. –