Хотите загрузить всю ассоциацию? - PullRequest
2 голосов
/ 01 апреля 2011

Есть ли способ, которым я могу стремиться загрузить весь граф объектов с помощью метода * grails list() domain?

Сейчас я указываю

MyObject.list(fetch:[assoc1:'eager']), но assoc1 имеетассоциации, которые также должны быть загружены.Есть ли простое решение для полной загрузки моего графа объектов?

1 Ответ

3 голосов
/ 02 апреля 2011

Нашел это в документации Grails. Он не совсем использует метод list (), однако он не позволяет указывать eager в ваших классах доменов, поэтому вы можете выполнять выборку по своему усмотрению. Я все еще не уверен на 100%, получит ли это то, что вы хотите, но это самая близкая вещь, которую я смог найти.

Запрос с нетерпением извлечения в раздел о нетерпеливых и ленивых извлечениях мы обсуждали как декларативно указывать выборка, чтобы избежать N + 1 SELECT проблема. Однако это также может быть достигается с помощью запроса критерия:

def criteria = Task.createCriteria()
def tasks = criteria.list{
    eq "assignee.id", task.assignee.id
    join 'assignee'
    join 'project'
    order 'priority', 'asc'
}
...