Grails - необходимо ограничить извлекаемые строки в зависимости от условия таблицы соединений - PullRequest
1 голос
/ 20 апреля 2010

У меня есть два домена Автомобиль и Драйвер , которые имеют отношение ко многим . Эта связь определена в таблице tblCarsDrivers , которая, что неудивительно, имеет первичные ключи обеих таблиц, НО дополнительно также имеет другое логическое поле удалено . В этом и заключается проблема. Когда я нахожу / получаю запрос к домену Car, я получаю все связанные драйверы независимо от их удаленного статуса в tblCarsDrivers, что ожидается.

Мне нужно поставить условие / ограничение исключить удаленные ассоциации из список выбранных записей.

PS: я пытался использовать домен ассоциации CarDriver в имени joinTable, но это, похоже, не работает. Очевидно, он ожидает только имена таблиц, а не карты.

PPS: Я знаю, что неестественно иметь какие-либо другие поля, кроме ключей сопоставления в таблице сопоставления, но так я его получил, и его нельзя изменить.

Домен автомобиля определен как таковой -

class Car {
    Integer id
    String name

    static hasMany = [drivers:Driver]

    static mapping = {
        table 'tblCars'
        version false
        drivers joinTable:[name: 'tblCarsDrivers',column:'driverid',key:'carid']
    }
}

Спасибо!

1 Ответ

3 голосов
/ 20 апреля 2010

Я знаю, что неестественно иметь какие-либо другие поля помимо ключей сопоставления в таблица сопоставления, но вот как я получил это и его нельзя изменить.

Это совсем не необычно. Если вы хотите хранить свойства об отношениях, это очевидное решение. Вам необходимо восстановить домен ассоциации CarDriver, который имеет удаленное свойство в дополнение к связи с автомобилем и водителем, и тогда вы сможете написать запрос, исключающий удаленных драйверов.

Подробный пример того, как определить такое отображение, приведен здесь .

...