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,我希望这样做,而不必检查每个查询,因为有几十个甚至数百个查询。