我要设置的是:
setReadOnly(true)
默认情况下对每个条件查询。
是否可以定义将应用于应用程序中执行的每个条件查询的默认设置?
附言
我可能还想添加以下内容作为条件默认值,但不确定它们是否会对setReadOnly产生任何其他影响:
setCacheMode(CacheMode.IGNORE)
setFlushMode(FlushMode.MANUAL)
最佳答案
做一些挖掘工作,发现它适合您:
http://www.javacodegeeks.com/2012/10/stuff-i-learned-from-grails-consulting.html
read方法的局限性在于它仅适用于按ID单独加载的实例。但是还有其他影响多个实例的方法。一种是将整个 session 设为只读:
1 session.defaultReadOnly = true
现在,所有加载的实例将默认为只读,例如来自条件查询和查找器的实例。
访问 session 的一种便捷方法是在任意域类上使用withSession方法:
1 SomeDomainClass.withSession { session ->
2 session.defaultReadOnly = true
3 }
但是,很少有整个 session 是只读的。您可以使用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 }
该技术的一个重大局限性是,附加的集合不会受到拥有实例的只读状态的影响(而且似乎没有一种方法可以将集合配置为忽略每个实例的更改)。
在Hibernate documentation中阅读有关此内容的更多信息