1

我正在尝试根据“状态”标准对一组对象执行过滤器。

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

如果 OR 中的 State 过滤器包含在 cide 中,它只会获取与 State 匹配的对象,而不是 Office.State。如果我删除状态过滤器代码,它会正确获取对象的 Office.State。

标准需要获取对象的状态(如果有的话)以及对象的 Office.State(如果有的话)。

我假设它与标准构建器中的一些隐式连接有关?

任何线索将不胜感激!

4

1 回答 1

0

感谢评论中的 Jeff,我能够打开 SQL 日志记录,通过更多的谷歌搜索找到我的问题解决方案。正如我所怀疑的,它正在执行内部连接。这是我解决问题所需的代码。

...
createAlias('state', 'state', JoinType.LEFT_OUTER_JOIN)
or {
    office {
        'in'('state.abbrev', filters.stateFilter)
    } 
    'in'('state.abbrev', filters.stateFilter)
}
于 2020-04-30T22:34:38.167 回答