设定:
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”应强制hibernate对每个println行只使用一个查询。不幸的是,有两个没有连接的选择查询。
我的调查
我创建了一个新的Grails项目,它的工作原理如文档中所述,但A类不在外部插件中。
问题
任何想法为什么fetch:“join”在上面的例子中被忽略了?
答案 0 :(得分:0)
从2.x开始,使用条件时会忽略fetch / eager join。
请参阅此错误报告:https://jira.grails.org/browse/GRAILS-9829
这是一个相当大的问题,但它归功于Hibernate3,因此在Grails中不易解决。
您需要使用HQL才能获取/热切加入。