최대 절전 모드하는 방법 :Grails는이 짧은을 만들거나 나는 이런 식으로 뭔가 보이는 쿼리있어
이SomeDomain.executeQuery("""
from
SomeDomain x
where
x.linkToSomeA = coalesce(:a, x.linkToSomeA) and
x.linkToSomeB = coalesce(:b, x.linkToSomeB) and
...
""",
[a: someA, b: someB, ...]
)
의도 된 동작은 다음과 같습니다 null
는 기준 매개 변수에 공급되면,이 기준이되어야한다 무시. null
이 제공되면 기준이 사용됩니다.
Hibernate가 도메인 클래스 인스턴스가 예상되는 null
을 제공 할 수 없다는 점을 제외하면 모든 것이 정상적으로 작동합니다. 따라서 결국 이것은 유효한 쿼리가 아닙니다. null
이 제공되면 실제로 NullPointerException
이 발생합니다.
톤 if-else
을 사용하지 않고 이것을 다시 쓰는 방법을 찾지 못했습니다. 아무도 이것에 대해 어떤 생각을 가지고 있습니까 동등하게 간단하고 유효 동시에?
참고 : 실제 검색어는 그보다 복잡하므로 제발, executeQuery
이외의 것을 사용하여 다시 작성하지 마십시오.
문제는 내가 버그로 인해 기준을 사용할 수 없음을 확인한 마지막 시간입니다. 하지만 어쩌면 당신 말이 맞아요. 그리고 정말로 어떤 방법도 없습니다. – julkiewicz