Grails Gorm запрос вопрос - PullRequest
       5

Grails Gorm запрос вопрос

1 голос
/ 25 июня 2011

имеющих доменные классы:

class A {

 Date dateCreated
 static hasMany = [b:B]
 ...

}

class B {

  String name
  String value
...

}

Какой запрос createCriteria или HQL можно использовать для возврата списка с:

  • Дата создания A
  • Значение B для A с записью имени, установленной в 'X'

Примечание. Хотя явного ограничения нет, для каждого «Х» и комбинации есть только одно «значение».

Спасибо

1 Ответ

2 голосов
/ 25 июня 2011

HQL будет

def results = A.executeQuery(
    'select a.id, a.dateCreated, b from A a inner join a.b b ' +
    'where b.name=:name',
    [name: 'X'])

Это даст вам List из трехэлементных Object[] массивов, содержащих A.id, A.dateCreated и список B экземпляров. Я добавил идентификатор в запрос, чтобы вы могли сгруппировать его по стороне клиента:

def grouped = results.groupBy { it[0] }

Это будет Map, где ключами являются A идентификаторы, а значения - List s от исходных результатов.

В идеале вы должны выполнить группировку в базе данных, но это усложнит запрос, и, если у вас нет большого количества результатов, оно должно быть быстрым.

...