Hibernate 如何将默认行为设置为Grails';标准

Hibernate 如何将默认行为设置为Grails';标准,hibernate,grails,criteria,Hibernate,Grails,Criteria,我想做的是设置: setReadOnly(true) 默认情况下,每个条件查询 是否可以定义应用于应用程序中执行的每个条件查询的默认设置? 附言。 我可能还想添加以下作为标准默认值,但不确定它们是否会对setReadOnly产生任何额外影响: setCacheMode(CacheMode.IGNORE) setFlushMode(FlushMode.MANUAL) 进行了一些挖掘并为您找到了以下内容: read方法的一个限制是,它仅适用于按id单独加载的实例。但还有其他方法会影响多个实例。

我想做的是设置:

setReadOnly(true)
默认情况下,每个条件查询

是否可以定义应用于应用程序中执行的每个条件查询的默认设置?

附言。 我可能还想添加以下作为标准默认值,但不确定它们是否会对setReadOnly产生任何额外影响:

setCacheMode(CacheMode.IGNORE)
setFlushMode(FlushMode.MANUAL)

进行了一些挖掘并为您找到了以下内容:

read方法的一个限制是,它仅适用于按id单独加载的实例。但还有其他方法会影响多个实例。一种是将整个会话设置为只读:

1   session.defaultReadOnly = true
现在,所有加载的实例都将默认为只读,例如来自条件查询和查找器的实例

访问会话的一种方便方法是在任意域类上使用withSession方法:

1   SomeDomainClass.withSession { session ->
2      session.defaultReadOnly = true
3   }
但很少有整个会话是只读的。您可以使用setReadOnly方法将单个条件查询的结果设置为只读:

1   def c = Account.createCriteria()
2   def results = c {
3      between('balance', 500, 1000)
4      eq('branch', 'London')
5      maxResults(10)
6      setReadOnly true
7   }
这种技术的一个重要限制是,附加的集合不受所属实例的只读状态的影响(而且似乎没有一种方法可以将集合配置为忽略每个实例的更改)

谢谢中阅读更多关于这方面的内容(我实际上已经阅读了您提到的页面),但这确实解决了问题。我需要的是为应用程序中的所有条件查询将read only设置为true,我希望这样做,而不必检查每个查询,因为有几十个甚至数百个查询。