我正在尝试根据“状态”条件对一组对象执行过滤。
...
or {
office {
state {
'in'('abbrev', filters.stateFilter)
}
}
state {
'in'('abbrev', filters.stateFilter)
}
}
如果该对象中包含OR中的State过滤器,则它只会获取与State匹配的对象,而不会与Office.State匹配。如果删除状态过滤器代码,它将正确获取对象的Office.State。
条件需要获取对象的状态(如果有一个)以及对象的Office.State(如果有一个)。
我假设它与条件构建器中的某些隐式联接有关?
任何线索将不胜感激!
最佳答案
感谢Jeff的评论,我能够打开SQL日志记录以使用更多Google搜索来查找问题解决方案。正如我所怀疑的,它正在执行内部联接。这是解决该问题所需的代码。
...
createAlias('state', 'state', JoinType.LEFT_OUTER_JOIN)
or {
office {
'in'('state.abbrev', filters.stateFilter)
}
'in'('state.abbrev', filters.stateFilter)
}
关于hibernate - Grails CreateCriteria逻辑或无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61533279/