sql >> Base de Datos >  >> RDS >> Mysql

El método setSavePoint de transacción de Grails en mysql causa una excepción

De forma predeterminada, el administrador de transacciones para Hibernate y MySQL no tiene habilitados los puntos de guardado.

En BootStrap.groovy agregue lo siguiente:

transactionManager.setNestedTransactionAllowed(true)

Luego, en una transacción, puede hacer lo siguiente:

Thing.withTransaction { status ->
  //Do some work and a save
  def savePoint = status.createSavepoint()
  //do other work
  if(checkOk)
  {
    //Everything worked so don't need the save point anymore
    status.releaseSavepoint(savePoint)
  }
  else
  {
    //The other work did not work so rollback from it.
    status.rollbackToSavepoint(savePoint)
  }

}