Hibernate Grails CreateCriteria逻辑错误或工作不正常
我试图根据“状态”条件对一组对象执行筛选Hibernate Grails CreateCriteria逻辑错误或工作不正常,hibernate,grails,gorm,createcriteria,logical-or,Hibernate,Grails,Gorm,Createcriteria,Logical Or,我试图根据“状态”条件对一组对象执行筛选 ... or { office { state { 'in'('abbrev', filters.stateFilter) } } state { 'in'('abbrev', filters.stateFilter) } } 如果OR中的状态筛选器包含在cide中,则它只获取与状态匹配的对象,而不获取Office.State。如果我删除状态筛选代
...
or {
office {
state {
'in'('abbrev', filters.stateFilter)
}
}
state {
'in'('abbrev', filters.stateFilter)
}
}
如果OR中的状态筛选器包含在cide中,则它只获取与状态匹配的对象,而不获取Office.State。如果我删除状态筛选代码,它将正确获取对象的Office.State
条件需要获取对象的状态(如果有)以及对象的Office.State(如果有)
我假设它与criteria builder中的一些隐式联接有关
任何线索将不胜感激 多亏了Jeff的评论,我才能够打开SQL日志,通过更多的谷歌搜索找到问题的解决方案。正如我所怀疑的,它正在执行内部连接。下面是我需要解决这个问题的代码
...
createAlias('state', 'state', JoinType.LEFT_OUTER_JOIN)
or {
office {
'in'('state.abbrev', filters.stateFilter)
}
'in'('state.abbrev', filters.stateFilter)
}
多亏了Jeff的评论,我才能够打开SQL日志,通过更多的谷歌搜索找到问题的解决方案。正如我所怀疑的,它正在执行内部连接。下面是我需要解决这个问题的代码
...
createAlias('state', 'state', JoinType.LEFT_OUTER_JOIN)
or {
office {
'in'('state.abbrev', filters.stateFilter)
}
'in'('state.abbrev', filters.stateFilter)
}
如果在
数据源
配置中将logSql
设置为true
,则生成的SQL将被记录到控制台。这可能会让我们了解出了什么问题。谢谢!日志显示它正在执行内部联接,这可能是问题所在。如果在数据源
配置中将logSql
设置为true
,则生成的SQL将被记录到控制台。这可能会让我们了解出了什么问题。谢谢!日志显示它正在执行内部连接,这可能是问题所在。