Короче говоря, у меня есть три метода:
@Transactional(propagation=Propagation.REQUIRED, noRollbackFor=Exception.class)
public void Manage(long bookId) throws Exception {
Book book = dao.getByKey(bookId);
//...
register(book);
}
@Transactional(propagation=Propagation.REQUIRED, noRollbackFor=Exception.class)
public void register(Book book) {
try {
// updateSomeId method should be called in another thread
// POST request to the service, waiting for the response then updating the DB
Runnable task = () -> {
if(someId > 0) {
dao.updateSomeId(book, someId);
}
Thread thread = new Thread(task);
thread.start();
} catch (Exception e) {
}
}
@Transactional(propagation=Propagation.REQUIRED, noRollbackFor=Exception.class)
public void updateSomeId(Book book, long someId) {
try {
Book findedBook = getByKey(book.getBookId());
findedBook.setSomeId(someId);
} catch (Exception e) {
logger.error("error", e);
}
}
updateSomeId
метод должен обновить свойство someId
в таблице Book.
В журнале я вижу: Hibernate: update Book set author=?, someId=? where bookId=?
Но в моей БД нет никаких изменений, никаких ошибок.Может ли кто-нибудь объяснить, что происходит и как это решить? Это одно из тысяч обновлений, которые у меня есть, и только в этом случае оно не обновило таблицу БД.
JPA 2.1
Hibernate 5.2.10. Финал