Где-Grails / GORM, как установить свойство fetchMode - PullRequest
1 голос
/ 19 января 2012

В Grails 2 мы все знаем, что предложение where создает DetachedCriteria.Также можно установить свойство fetchMode для отношения при создании нормального запроса Criteria.Но если я создаю запрос where-условия, как мне установить свойство fetchMode базового критерия?

Не работает:

MyDomainClass.where {
  foo == 'bar'
  fetchMode "reference", FetchMode.EAGER
}

работает, но использует старые критериипредложение style, not where:

MyDomainClass.withCriteria {
  eq "foo", "bar"
  fetchMode "reference", FetchMode.EAGER
}

Пожалуйста, не говорите мне, чтобы я выбрал режим извлечения в привязке классов домена.Я знаю об этом, и мне нужно контролировать выборку на уровне запросов.Спасибо!

1 Ответ

1 голос
/ 20 января 2012

Это пока не поддерживается, поэтому, пожалуйста, создайте запрос функции на http://jira.grails.org/browse/GRAILS

Однако существует несколько хакерский обходной путь, получая доступ к экземпляру Hibernate Criteria, который выполняет фактический запрос:

MyDomainClass.where {
   foo == 'bar'
}.withPopulatedQuery(null, null) { query ->
   query.@criteria.setFetchMode('reference', FetchMode.EAGER)
   query.list()
}
...