2011-10-12 3 views
7

Comment utiliser le GORM .get pour récupérer un objet o, modifier certains champs et appeler o.validate() pour trouver des erreurs sans que Hibernate n'enregistre l'objet dans la base de données. rejeter par lui-même n'empêche pas la sauvegarde. Ni neModifier et valider un objet de domaine grails sans l'enregistrer

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

This poste vous recommandons d'utiliser un objet de commande, mais ce code sera applicable à de nombreux objets de domaine. Il doit y avoir un moyen simple (certains paramètres passés à valider?) Pour donner à Hibernate l'instruction ne pas sauvegarder. Ai-je besoin de créer une nouvelle instance à chaque fois?

Répondre

11

Si vous utilisez read() au lieu de get() pour récupérer l'objet, il ne sera pas enregistré automatiquement lors d'un vidage (par exemple à la fin d'une transaction ou d'une requête Web). Ce n'est pas vraiment en lecture seule, puisque vous pouvez appeler save() et il va persister - il ne va tout simplement pas enregistrer automatiquement lorsqu'il est sale.

+0

n'est-il pas nécessaire d'appeler explicitement o.save() pour placer un objet dans la file d'attente de vidage? –

+2

Non, toute instance attachée à la session modifiée sera vidée. Le seul moment où vous devez appeler 'save()' est pour les nouvelles instances. –

+0

Super. Je vous remercie – cardenizen

Questions connexes