2011-04-01 75 views
2

有沒有一種方法可以用grails list()域方法來加載整個對象圖?渴望加載整個關聯?

現在,我指定

MyObject.list(fetch:[assoc1:'eager']),但assoc1有哪些,還必須即時加載關聯。有沒有簡單的解決方案來加載我的整個對象圖?

回答

3

在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' 
} 
+0

這讓我更接近,至少。 +1贊成有幫助,並且除非有人提供更好的答案,否則您將獲得接受。 – 2011-04-05 16:55:00