Lo + Leído
Eventos destacados
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:
- Introducción a Groovy, parte 1 (Andrés Almiray)
- Introducción a Groovy, parte 2 (Andrés Almiray)
- Introducción a Groovy, parte 3 (Andrés Almiray)
- Introducción a Grails (Material Seminario ImaginaWorks)
Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:
Grails
Transacciones declarativas. Hacer rollback sobre una BD
Pablo Riesgo - lunes 25/08/2008Hola,
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
Pablo Riesgo - martes 02/09/2008Efectivamente 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/2008Mitad 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.
Re: Transacciones declarativas. Hacer rollback sobre una BD
srcarro - miércoles 27/08/2008