我要设置的是:

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中阅读有关此内容的更多信息

10-08 20:01
查看更多