Grails CreateCriteria логическое ИЛИ не работает должным образом - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь выполнить фильтр для группы объектов на основе критерия «Состояние».

...
or {
    office {
        state {
            'in'('abbrev', filters.stateFilter)
        }
    } 
    state {
        'in'('abbrev', filters.stateFilter)
    }
}

Если фильтр состояния в операторе OR включен в cide, он получает только объекты, соответствующие государство, а не офис. Государство также. Если я удаляю код фильтра состояния, он правильно получает Office.State объекта.

Критерии должны получить состояние объекта (если оно есть), а также Office.State объекта (если он есть).

Я предполагаю, что это как-то связано с некоторыми неявными объединениями в построителе критериев?

Будут признательны за любые предложения!

1 Ответ

0 голосов
/ 01 мая 2020

Благодаря Джеффу в комментариях я смог включить SQL вход в систему, чтобы найти решение моей проблемы с еще одним поиском в Google. Как я и подозревал, он выполнял внутреннее соединение. Вот код, который мне нужен для решения проблемы.

...
createAlias('state', 'state', JoinType.LEFT_OUTER_JOIN)
or {
    office {
        'in'('state.abbrev', filters.stateFilter)
    } 
    'in'('state.abbrev', filters.stateFilter)
}
...