у меня есть весенний проект под Java, использующий запрос гибернации, мне нравится использовать пессимистическую блокировку.
Как сделать пессимистическую блокировку в Spring + Hibernate?
Edit:
@Loggable(value = LogLevel.TRACE)
@Transactional
@Override
public void updateBalance(String id, BigDecimal amount) {
Session session = sessionFactory.getCurrentSession();
sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.flush();
Account acc = (Account) session.get(Account.class, id, LockMode.UPGRADE);
acc.setName("New Account");
acc.setBalance(acc.getBalance().subtract(amount));
save(acc);
try{
tx.commit();
}catch (TransactionException e){
tx.rollback();
}
session.close();
}
Проблема:
Я хочу использовать пессимистическую блокировку в методе, и я вызываю этот метод в отличие от методов. пессимистично работает, когда я вызываю его из первого метода, но дает (транзакция не может быть зафиксирована), когда я вызываю его из второго метода
Исключение:
Could not commit Hibernate transaction; nested exception is org.hibernate.
TransactionException: Transaction not successfully started