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

lfr*_*ues 5 grails hibernate criteria eager

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

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

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

class C {
    static belongsTo = [a:A, b:B]
}
Run Code Online (Sandbox Code Playgroud)

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

A.withCriteria() {
    fetchmode "cs", FetchMode.JOIN
    fetchMode "cs.b", FetchMode.JOIN
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

lfr*_*ues 9

解决了.

A.withCriteria() {
    cs{
        fetchMode "cs.b", FetchMode.JOIN
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

A.withCriteria() {
    cs{
        b{
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,Hibernate都使用两个查询.比我以前的98好多了;-)