grails - ¿Por qué GORM no está salvando mi objeto?
button grails (2)
Es probable que tenga una violación de restricción. Agregue failOnError: true
a los parámetros de su método de guardado. Entonces obtendrás una excepción cuando tu guardado falla. (Alternativamente, puede verificar el valor de retorno desde guardar, y si es falso, imprima p.errors.allErrors()
.
La validación y el ahorro se hacen juntos. Si está validando los datos enviados por el usuario que se han vinculado a algún objeto de dominio, para verificar el fallo de guardado debido a una entrada no válida, lo que debe hacer es verificar el valor de retorno de guardar; fallar en la cuenta de entrada no válida no es un comportamiento excepcional. Si solo desea guardar el contenido del objeto y desea que se lance una excepción si hay un problema, use failOnError
.
Para obtener más información sobre la razón por la que diseñaron GORM para que necesite hacer esto, consulte este artículo .
Si ejecuto este código en la consola de Grails:
def p = new Post(title: "T");
p.save(flush: true); // or p.save();
Post.count();
GORM no está lanzando excepciones, pero los datos no se guardan en mi base de datos. ¿Qué estoy haciendo mal?
Probablemente se está violando alguna restricción en la Post
y, por lo tanto, el objeto no se está guardando. Tenga en cuenta que el comportamiento predeterminado de GORM es no lanzar un guardado fallido. Necesitas llamarlo como
p.save(flush: true, failOnError: true);
O cambie el comportamiento globalmente agregando
grails.gorm.failOnError=true
a su Config.groovy