Mysql
 sql >> Database >  >> RDS >> Mysql

Il metodo setSavePoint della transazione Grails su mysql causa un'eccezione

Per impostazione predefinita, il gestore delle transazioni per l'ibernazione e MySQL non ha i punti di salvataggio abilitati.

In BootStrap.groovy aggiungi quanto segue:

transactionManager.setNestedTransactionAllowed(true)

Quindi in una transazione puoi fare quanto segue:

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)
  }

}