您好,我在构建命名查询时似乎遇到了障碍。
我有以下情况: 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时,我需要在查询中拥有什么 标准是成功的吗?
答案 0 :(得分:0)
从快速扫描看,这看起来非常合理。我建议删除国家/地区部分,并确保在没有它的情况下获取数据。然后我的下一步是打开sql日志记录(将logSql元素添加到datasource,每http://grails.org/doc/latest/guide/conf.html#dataSource),并查看用于查找数据的内容。