如何在Grails中加载通过joinTable定义的关联类?

时间:2010-11-17 20:13:09

标签: grails performance

换句话说,以下内容:

class Subscriber { 
    ... 
    static hasMany = [ topics : Topic] 
    static fetchMode = [topics:"eager"] 

    static mapping = { 
        topics joinTable: [name: 'subscriber_topic', column: 'topic_id', key: 'subscriber_id']  
    } 
} 

急切地加载连接表subscriber_topic但不加载在sql日志中看到的Topic类:

Hibernate: 
    select 
        subscriber0_.id as id41_0_, 
        subscriber0_.version as version41_0_, 
        .... 
        topics2_.subscriber_id as subscriber1_3_, 
        topics2_.topic_id as topic2_3_ 
    from 
        subscriber subscriber0_ 
    left outer join 
        subscriber_topics topics2_ 
            on subscriber0_.id=topics2_.subscriber_id 
    where 
        subscriber0_.id=? 

我希望获取实际的Topic对象 - 而不是连接表。但是,似乎在连接表中发生了提取,而不是实际的关联对象。

1 个答案:

答案 0 :(得分:0)

虽然可能没有明确的方法来在域类中使用joinTable声明来加载关联,但是在发出查询时可以进行深度预测加载Criteria Builder(例如withCriteria())as通过这个题为“withCriteria two level deep association eager fetch grailsn

的问题进行说明和回答