Secciones

Artículos para tus primeros pasos

Si estás empezando a introducirte en el mundo de Groovy y Grails, no te pierdas nuestros artículos básicos: 

Entrevistas con los expertos
 

Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:


Un proyecto de:
ImaginaWorks
Campus Escuela de Groovy

Grails

Transacciones declarativas. Hacer rollback sobre una BD

Pablo Riesgo - lunes 25/08/2008

Hola,

Estoy intentando que un método de un servicio se comporte de manera transaccional haciendo automaticamente un rollback sobre la base de datos en caso de error.

Esto está documentado en el manual de grails http://grails.org/doc/1.0.x/ sección 8.1

Sin embargo, el siguiente servicio no realiza el rollback:

 class SessionService
{
    static transactional = true

    def createUser() throws CreateUserException
    {

           /** operaciones sobre la BD */

           throw new CreateUserException ("Probando el rollback...")

    }

}

 

No se si se me está pasando algo (es lo mas probable) o es que simplemente no funciona...

A ver si alguien me puede echar una mano.

Gracias de antemano,

Pablo.

 

PD: además el manual muestra los ejemplos de servicios con "static transactional", mientras que la versión de grails 1.0.3 genera los servicios automaticamente con "boolean transactional". No se si esto podría afectar de alguna manera...

 

 

 

Re: Transacciones declarativas. Hacer rollback sobre una BD

srcarro - miércoles 27/08/2008
¿Qué tipo de Excepción estas lanzando? Debería ser RuntimeException.

Re: Transacciones declarativas. Hacer rollback sobre una BD

Pablo Riesgo - martes 02/09/2008

Efectivamente con RuntimeException hace el rollback perfectamente. Estaba utilizando una subclase de Exception...

¿Esto está documentado por alguna parte o son conocimientos adquiridos con la práctica pura y dura? :)

Gracias y un saludo,

Pablo.

Re: Transacciones declarativas. Hacer rollback sobre una BD

srcarro - miércoles 03/09/2008

Mitad y mitad:

En la documentación de Grails yo no he visto nada al respecto. En la de Spring si: Ahí te dice que, como con EJBs,  el comportamiento por defecto es hacer rollback sólo en caso de lanzar una runtime. Es el comportamiento por defecto, por lo que puedes cambiarlo: puedes decidir que excepciones producirán un rollback y cuales no. ¿Dónde se configura eso en Grails? Puesssss... Por ahí, supongo. Algún .groovy habrá, digo yo.

Responder al hilo | Volver al foro "Grails" | Volver a los foros