Estoy tratando de actualizar un código de una versión anterior de Hibernate (versión 3). Utiliza dos métodos de la interfaz Transaction que ya no existen en Hibernate 5.
session.getTransaction().wasCommitted() session.getTransaction().wasRolledBack()¿Cuál es el equivalente en Hibernate 5?
Parece que estás buscando session.getTransaction().getStatus() . Por ejemplo,
session.getTransaction().getStatus() == TransactionStatus.COMMITTED session.getTransaction().getStatus() == TransactionStatus.ROLLED_BACK También es posible que desee examinar los documentos de TransactionStatus para ver la granularidad relativamente fina de los estados de las transacciones, ya que es posible que desee o necesite sustitutos más inclusivos que los anteriores. Además, no pase por alto los métodos de TransactionStatus , que pueden resultarle útiles. Por ejemplo,
session.getTransaction().getStatus().isOneOf( TransactionStatus.MARKED_ROLLBACK, TransactionStatus.ROLLING_BACK, TransactionStatus.ROLLED_BACK)Encontré este problema al actualizar Hibernate. Así modifiqué mi código
Transaction trans = null;Una vez que cometemos la transacción, podemos verificar su estado y devolver el valor booleano como verdadero o falso como
boolean wasCommitted=trans.getStatus().equals("ACTIVE")?true:false;Podríamos confundirnos entre Activo y COMPROMETIDO, pero descubrí que activo en hibernación es equivalente a wasCommitted() en la versión anterior
ACTIVE, /** * The transaction has been completed successfully. */ COMMITTED, /** * The transaction has been rolled back. */ ROLLED_BACK, /** * The transaction has been marked for rollback only. */Probar
transaction.getStatus().canRollback()