こんにちは、名前付きクエリを作成するときに壁にぶつかったようです。
次のような状況があります。個人にはオプションの住所があり、住所にはオプションの国があります。
ここで、一連のフィールドをフィルタリングして、テキストを検索したときに結果を返したいと思います。
次の作品を試しましたが、人に住所と場所があり、住所に国がない場合は、結果が得られません。
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の場合は常に、クエリは期待される結果を返しません。したがって、国がnullの場合にいくつかの結果が期待されます。
国がnullであるが、他の基準が成功した場合、クエリに何を含める必要がありますか?