hibernate - Grails CreateCriteria逻辑或无法正常工作

标签 hibernate grails gorm createcriteria logical-or

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

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

相关文章:

java - 为 MongoDB 淘汰 Hibernate/Mysql 或为 Java/Spring/Tomcat Web 应用程序淘汰 Couch

java - 写入 Oracle 时使用 java.util.Date 时区问题

java - 仅记录当前线程/ session 的 Hibernate SQL 的最简单方法

grails - 成功调用服务后,Grails无法提交

unit-testing - 我如何模拟grails domain.refresh()

hibernate - HQL 按多对多集合属性排序

grails - 如何使用 taglib 在延迟位置声明外部 js?

grails - Grails禁止正常创建

grails - Grails从2.4.5升级到3.3.2:关系 'xxx'不存在

unit-testing - Grails:在单元测试期间从服务中的数据模型对象获取IndexOutOfBoundsException