Pourquoi ne pas le Graal m'avertir de l'erreur de domaine objet de l'économie?
Je viens juste de commencer avec le Graal, et voici la première question.
J'ai passé plusieurs heures à trouver que le domaine de l'objet ne peut pas être insérée dans la DB, jusqu'à ce que toutes ses propriétés sont peuplées.
class Item {
String title
String link
}
class ItemController {
def fetch = {
def item = new Item()
item.title = "blabla"
//no value for "link"
item.save()
}
}
Semble logique, mais pourquoi est-elle ignorée, donc en silence? Puis-je configurer quelque chose pour obtenir des exceptions dans de tels cas?
Grâce
OriginalL'auteur mkuzmin | 2011-01-21
Vous devez vous connecter pour publier un commentaire.
Aucune exception n'est levée par défaut .
La
save()
méthode injecté à des classes de Domaine renvoiefalse
si une erreur a eu lieu au cours de la phase de validation.Un classique exemple de code pour la vérification de la sauvegarde/mise à jour d'un domaine est la classe :
Si vous avez besoin d'avoir une exception pour un domaine particulier de la classe, utilisation:
et exceptions pour les erreurs de validation seront jetés.
Si vous souhaitez lancer une exception pour TOUTES les classes de domaine, il vous suffit de définir
grails.gorm.failOnError
àtrue
dans graal-app/conf/Config.groovyAttention : toutes les propriétés du domaine ont implicite
nullable: false
contrainte.Je vous recommande la lecture de cet article.
grails.gorm.failOnError = true
. À mon humble avis, il devrait être la valeur par défaut. En tout cas, c'est un parfait complément à ce que j'aime à utiliser:grails.gorm.default.constraints = { '*' nullable: true }
Les contraintes de bloc doit être utilisé pour ajouter contraintes, comme certains le terrain, de ne pas les lever.Idéalement, à mon humble avis, Graal devrait faire
belongsTo
champs requis par défaut, et tous les autres en option.OriginalL'auteur fabien7474
Pour faire de votre
save()
appel jeter unRuntimeException
, vous pouvez utiliseritem.save(failOnError:true)
. Mais vous pouvez également vérifier la valeur de retour de la méthode save (). Si c'est faux, cela signifie que quelque chose de mal est arrivé.OriginalL'auteur yogiebiz