Grails / GORM where-clause如何设置fetchMode属性

时间:2012-01-19 17:10:31

标签: grails properties gorm where-clause fetch

在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。我知道这一点,需要控制查询级别的热切提取。谢谢!

1 个答案:

答案 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()
}