修改并验证grails域对象而不保存它

问题描述:

如何使用GORM .get来检索对象o修改某些字段并调用o.validate()来查找没有Hibernate时将对象保存到数据库的错误。丢弃本身并不妨碍保存。同样没有修改并验证grails域对象而不保存它

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

This后建议使用一个命令对象,但是这个代码将适用于许多不同的域对象。必须有一个简单的方法(传递一些参数来验证?)给Hibernate不保存指令。我是否需要每次都创建一个新实例?

如果您使用read()而不是get()来检索该对象,它将不会在刷新期间(例如在事务或Web请求结束时)自动保存。它不是真正的只读,因为你可以调用save(),它会一直存在 - 它不会在肮脏时自动保存。

+0

是不是有必要显式调用o.save()将对象放入flush队列中? –

+2

不,连接到被修改的会话的任何实例都将被刷新。唯一需要调用'save()'的时间是针对新实例的。 –

+0

太好了。谢谢 – cardenizen