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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Grails的CreateCriteria逻辑性和OR性都不正常。相关的知识,希望对你有一定的参考价值。

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

...
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)

以上是关于Grails的CreateCriteria逻辑性和OR性都不正常。的主要内容,如果未能解决你的问题,请参考以下文章

使用 createCriteria 的 Grails 子查询

引起:java.lang.NoSuchMethodError: createCriteria grails

Grails 2.x createCriteria 'or' 不适用于嵌套关联

Grails createCriteria:通过作为空域类实例的字段查找对象

优化 Grails 查询

Grails gorm 查询问题