Я новичок в hibernate и java-ee в целом, и мне было интересно, может ли кто-нибудь сказать мне, почему этот кусок кода возвращает false, хотя, глядя на базу данных, я вижу, что транзакция действительно была совершена:
session.beginTransaction();
session.saveOrUpdate(user);
session.getTransaction().commit();
return session.getTransaction().wasCommitted(); //Always false
Спасибо!
wasCommitted()
не всегда должен возвращать true
, даже если фиксация была успешной. Он вернет true
, если транзакция была (однозначно) committed
через эту локальную транзакцию; false
в противном случае.
Из docs: -
wasCommitted
Этот метод может возвращать false даже после успешного вызова совершить(). В качестве примера, стратегии JTA, основанные на принципах no-op, для вызовов commit() если они не начали транзакцию; в этом случае они также сообщают wasCommitted() как false.
Check if this transaction was successfully committed. This method could return false even after successful invocation of commit(). As an example, JTA based strategies no-op on commit() calls if they did not start the transaction; in that case, they also report wasCommitted() as false.
Не знаю, если это что-то объясняет.