我正试图根据 "国家 "标准对一组对象进行过滤。
...
or {
office {
state {
'in'('abbrev', filters.stateFilter)
}
}
state {
'in'('abbrev', filters.stateFilter)
}
}
如果OR中的State过滤器被包含在cide中,它只得到与State相匹配的对象,而不是Office.State。如果我删除State过滤代码,它就会正确地得到对象的Office.State。
标准需要得到对象的状态(如果有的话)以及对象的Office.State(如果有的话)。
我认为这与标准构建器中的一些隐式连接有关?
如果有任何线索,我将非常感激
感谢评论中的Jeff,让我能够打开SQL日志,通过一些更多的Googling找到我的问题解决方案。正如我所怀疑的那样,它正在执行一个内部连接。以下是我需要解决这个问题的代码。
...
createAlias('state', 'state', JoinType.LEFT_OUTER_JOIN)
or {
office {
'in'('state.abbrev', filters.stateFilter)
}
'in'('state.abbrev', filters.stateFilter)
}