Grails条件查询与fetchMode eager有两个级别

时间:2012-05-16 20:57:24

标签: hibernate grails criteria eager

在我的Grails项目中,我有以下类:

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

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

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

我想查询A类并急切地带来B和C的所有关联。 我尝试了以下条件查询,但是当我从A迭代Cs时,hibernate使用延迟初始化来查询B对象。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:9)

解决。

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

或者

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

在这两种情况下,Hibernate都使用两个查询。比我之前的98更好; - )