【问题标题】:Grails criteria query with fetchMode eager with two levels带有 fetchMode 的 Grails 标准查询具有两个级别
【发布时间】:2012-05-24 11:47:43
【问题描述】:

在我的 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
}

有什么想法吗?

【问题讨论】:

    标签: hibernate grails criteria eager


    【解决方案1】:

    解决了。

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

    或者

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

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

    【讨论】:

    • 我在one-to-many 上遇到了类似的问题,FetchMode.SELECT 为我解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2012-02-21
    • 1970-01-01
    • 2017-05-18
    相关资源
    最近更新 更多