2012-05-16 12 views
5

Trong dự án Grails tôi, tôi có các lớp sau:Grails tiêu chí truy vấn với fetchMode háo hức với hai cấp độ

class A { 
    static hasMany = [cs:C] 
} 

class B { 
    static hasMany = [cs:C] 
} 

class C { 
    static belongsTo = [a:A, b:B] 
} 

Tôi muốn truy vấn các lớp A và đưa tất cả các hiệp hội từ B và C háo hức. Tôi đã thử truy vấn tiêu chí sau, nhưng khi tôi lặp qua Cs từ A, hibernate sử dụng khởi tạo lười biếng để truy vấn đối tượng B.

A.withCriteria() { 
    fetchmode "cs", FetchMode.JOIN 
    fetchMode "cs.b", FetchMode.JOIN 
} 

Bất kỳ ý tưởng nào?

Trả lời

8

Đã giải quyết.

A.withCriteria() { 
    cs{ 
     fetchMode "cs.b", FetchMode.JOIN 
    } 
} 

Hoặc

A.withCriteria() { 
    cs{ 
     b{ 
     } 
    } 
} 

Trong cả hai trường hợp Hibernate đang sử dụng hai truy vấn. Tốt hơn nhiều so với 98 tôi đã có trước đây ;-)