嗨,我在构建命名查询时似乎碰壁了。
我有以下情况:一个人有一个可选的地址,一个地址有一个可选的国家。
现在我想过滤一堆字段并在搜索某些文本时返回结果。
我尝试了以下部分,但是每当一个人有一个位置和地址并且地址没有国家/地区时,我就没有结果。
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}%"
}
}
}
}
}
}
}
}
每当 Person 的 Country 为 null 时,查询不会返回预期结果,因为据我所知,某些条件已满足!因此,当一个国家/地区为空时,我会期待一些结果。
当国家为空但其他条件成功时,我的查询中需要什么?