在Grails 2中,我们都知道where子句会创建一个DetachedCriteria。此外,可以在创建常规Criteria查询时设置关系的fetchMode属性。但是,如果我正在创建where子句查询,如何设置基础Criteria的fetchMode属性?
不起作用:
MyDomainClass.where {
foo == 'bar'
fetchMode "reference", FetchMode.EAGER
}
有效,但使用旧的Criteria样式,而不是where子句:
MyDomainClass.withCriteria {
eq "foo", "bar"
fetchMode "reference", FetchMode.EAGER
}
请不要告诉我在域类映射中将获取模式设置为eager。我知道这一点,需要控制查询级别的热切提取。谢谢!
答案 0 :(得分:1)
目前尚不支持此功能,因此请在http://jira.grails.org/browse/GRAILS
创建功能请求通过访问执行实际查询的Hibernate Criteria
实例,有一些有点麻烦的解决方法:
MyDomainClass.where {
foo == 'bar'
}.withPopulatedQuery(null, null) { query ->
query.@criteria.setFetchMode('reference', FetchMode.EAGER)
query.list()
}