当属性为null时,NamedQuery不返回结果?

时间:2012-11-13 15:26:12

标签: grails gorm

您好,我在构建命名查询时似乎遇到了障碍。

我有以下情况: Person具有可选地址,Address具有可选的Country。

现在我想过滤一堆字段并返回结果 搜索一些文字。

我尝试过以下几个部分,但每当一个人有一个地址和地址且地址没有国家时,我就没有结果。

    filterOnAddress { String loc ->
        if(!loc.isEmpty()) {
            location {
                address {
                    or {
                        ilike 'street', "%${loc}%"
                        ilike 'city',  "%${loc}%"
                        country {
                            or {
                                ilike 'titleLocal',  "%${loc}%"
                                ilike 'title',  "%${loc}%"
                            }
                        }
                    }
                }
            }
        }
    }
}

filterOnAddress { String loc ->
    if(!loc.isEmpty()) {
        location {
            address {
                or {
                    ilike 'street', "%${loc}%"
                    ilike 'city',  "%${loc}%"
                    and {
                        isNotNull('country')
                        country {
                            or {
                                ilike 'titleLocal',  "%${loc}%"
                                ilike 'title',  "%${loc}%"
                            }
                        }

                    }
                }
            }
        }
    }
}

只要Country为null,查询就不会返回 根据我所知的预期结果,一些标准是 见了!所以当一个国家为空时我会期待一些结果。

当country是null而另一个是null时,我需要在查询中拥有什么 标准是成功的吗?

1 个答案:

答案 0 :(得分:0)

从快速扫描看,这看起来非常合理。我建议删除国家/地区部分,并确保在没有它的情况下获取数据。然后我的下一步是打开sql日志记录(将logSql元素添加到datasource,每http://grails.org/doc/latest/guide/conf.html#dataSource),并查看用于查找数据的内容。