Как я могу загрузить класс ассоциации, определенный с помощью joinTable в Grails? - PullRequest
2 голосов
/ 17 ноября 2010

Другими словами, следующее:

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, но не класс Topic, как видно из журналирования sql:

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 голосов
/ 20 ноября 2010

Несмотря на то, что не может быть четкого способа вызвать ассоциации загрузки с использованием объявления joinTable в классе домена, вы можете выполнить глубокую загрузку, когда запрос выдается Criteria Builder (например, withCriteria()), как показано на рисунке и получен ответэтот вопрос под названием « с критериями двухуровневой глубокой ассоциации, стремящейся получить grailsn »

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...