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

car*_*zen 7 validation grails domain-object

如何使用GORM .get来检索对象o,修改一些字段,并调用o.validate()来查找错误,而无需Hibernate将对象保存到DB.丢弃本身并不妨碍保存.也没有

                clazz.withTransaction { status ->
                  row.validate(flush:false)
                  row.discard()
                  status.setRollbackOnly()
                }
Run Code Online (Sandbox Code Playgroud)

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

Bur*_*ith 11

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

  • 不,任何附加到已修改的会话的实例都将被刷新.你需要调用`save()`的唯一时间是新实例. (2认同)