Grails的CreateCriteria逻辑性和OR性都不正常。

问题描述 投票:1回答:1

我正试图根据 "国家 "标准对一组对象进行过滤。

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

如果OR中的State过滤器被包含在cide中,它只得到与State相匹配的对象,而不是Office.State。如果我删除State过滤代码,它就会正确地得到对象的Office.State。

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

我认为这与标准构建器中的一些隐式连接有关?

如果有任何线索,我将非常感激

hibernate grails gorm createcriteria logical-or
1个回答
0
投票

感谢评论中的Jeff,让我能够打开SQL日志,通过一些更多的Googling找到我的问题解决方案。正如我所怀疑的那样,它正在执行一个内部连接。以下是我需要解决这个问题的代码。

...
createAlias('state', 'state', JoinType.LEFT_OUTER_JOIN)
or {
    office {
        'in'('state.abbrev', filters.stateFilter)
    } 
    'in'('state.abbrev', filters.stateFilter)
}
© www.soinside.com 2019 - 2024. All rights reserved.