2011-10-12 18 views
7

¿Cómo uso GORM .get para recuperar un objeto o, modificar algunos campos y llamar a o.validate() para buscar errores sin que Hibernate guarde el objeto en el DB. descartar por sí mismo no impide el guardado. TampocoModificar y validar un objeto de dominio Grails sin guardarlo

   clazz.withTransaction { status -> 
        row.validate(flush:false) 
        row.discard() 
        status.setRollbackOnly() 
       } 

This puesto recomienda el uso de un objeto de comando, pero este código se aplicará a muchos diferentes objetos de dominio. Debe haber una manera simple (¿se pasó algún parámetro para validar?) Para darle a Hibernate la instrucción de no guardar. ¿Necesito crear una nueva instancia cada vez?

Respuesta

11

Si usa read() en lugar de get() para recuperar el objeto, no se guardará automáticamente durante una descarga (por ejemplo, al final de una transacción o una solicitud web). No es realmente de solo lectura, ya que puede llamar al save() y persistirá; simplemente no se guardará automáticamente cuando esté sucio.

+0

¿no es necesario llamar a o.save() explícitamente para poner un objeto en la cola de color? –

+2

No, cualquier instancia adjunta a la sesión que se modificó se vacíe. La única vez que necesita llamar 'save()' es para instancias nuevas. –

+0

Genial. Gracias – cardenizen

Cuestiones relacionadas