修改并验证 grails 域对象而不保存它
如何使用 GORM .get 检索对象 o、修改某些字段并调用 o.validate() 来查找错误,而无需 Hibernate 将对象保存到数据库。丢弃本身不会阻止保存。 这篇文章也不
clazz.withTransaction { status ->
row.validate(flush:false)
row.discard()
status.setRollbackOnly()
}
建议使用命令对象,但此代码将适用于许多不同的域对象。必须有一个简单的方法(传递一些参数来验证?)来给 Hibernate 不保存指令。我每次都需要创建一个新实例吗?
How do I use the GORM .get to retrieve an object o, modify some fields, and call o.validate() to find errors without Hibernate saving the object to the DB. discard by itself does not prevent the save. Neither does
clazz.withTransaction { status ->
row.validate(flush:false)
row.discard()
status.setRollbackOnly()
}
This post recommend using a command object but this code will apply to many different domain object. There must be a simple way (some parameter passed to validate?) to give Hibernate the do not save instruction. Do I need to create a new instance every time?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您使用
read()
而不是get()
来检索对象,则在刷新期间(例如,在事务结束或网络请求)。它不是真正的只读,因为您可以调用 save() 并且它会持续存在 - 只是脏时不会自动保存。If you use
read()
instead ofget()
to retrieve the object it won't be auto-saved during a flush (e.g. at the end of a transaction or a web request). It's not truly read-only, since you can callsave()
and it will persist - it's just not going to auto-save when dirty.