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

发布于 2024-12-09 15:53:22 字数 508 浏览 10 评论 0原文

如何使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜清冷一曲。 2024-12-16 15:53:22

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

If you use read() instead of get() 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 call save() and it will persist - it's just not going to auto-save when dirty.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文