1

设置:

3 域类 A、B 和 C。A 和 B 在插件中。C 在依赖于这个插件的应用程序中。

class A{
    B b
    static mapping = {
        b fetch: 'join'
    }
    ...
}

class C extends A{
    String name
    ...
}

C.list().each{
    println it.b.name
}

问题:

如文档 ( http://www.grails.org/doc/1.3.x/ref/Database%20Mapping/fetch.html ) 中所述, fetch: "join" 应该强制休眠对每个 println 行仅使用一个查询。不幸的是,有两个选择查询没有加入。

我的调查

我创建了一个新的 Grails 项目,它按照文档中的描述工作,但 A 类不在外部插件中。

问题

知道为什么 fetch: "join" 在上面的示例中被忽略了吗?

4

1 回答 1

0

从 2.x 开始,使用条件时会忽略 fetch/eager joins。

请参阅此错误报告:https ://jira.grails.org/browse/GRAILS-9829

这是一个相当大的问题,但由于 Hibernate3 在 Grails 中不容易解决。

您需要使用 HQL 才能获取/渴望加入。

于 2014-09-30T12:14:13.130 回答