确保域类的实例不被更改或修改的最佳方法是什么



当我通过 GORM 检索域实例时,可能存在代码修改该实例/行的危险。特别是因为即使不调用实例上的 .save((,Grails 也会自动保存它。

我之前确保这一点的唯一方法是确保我过去在实例上调用 discard((。有没有更好的方法?

这是针对圣杯 2.2.5

什么版本的 Grails/GORM?

一个选项是在@ReadOnly(或@Transactional(readOnly = true)(事务中执行此工作 - 如果尝试写入操作,将引发异常。

如果你想总是需要手动的.save((调用,可以通过改变hibernate.flush.mode来实现,尽管即使这样也有风险。 在大多数情况下,使用 .discard(( 是您最好的选择。 正如 Anton 指出的那样,您可以使用 .isDirty(( 来查找是否有任何更改,但这不会阻止保存的发生。

相关内容

  • 没有找到相关文章

最新更新