Очень упрощенный пример того, как я использую метод createCriteria для получения данных в моем приложении Grails:
def c = SomeClassOfMine.createCriteria()
def projects = c.list(max: limit, offset: start) {
eq("userId", userId)
if (owner != null && owner.size() > 0) {
ilike("ownerName", owner + "%")
}
if (someParameter && someParameter.size() > 0) {
or {
ne("validated", 1)
ne("validated2", 1)
}
}
order("name", "asc")
}
В строке, имеющей или {, я получаю исключение NullPointerException без сообщения. Я пробовал различные комбинации и внимательно следил за примерами, приведенными в разных местах, только чтобы обнаружить, что у меня возникает та же проблема, если я пытаюсь использовать и тоже. Я знаю, что есть и другие способы получения данных, но я бы очень хотел использовать этот подход. Я сам не смог понять, что может быть не так, поэтому ... Что может вызвать исключение NullPointerException в таком блоке кода на или / и ?
Я бы предоставил больше информации, если бы знал, что относится к этому делу.
РЕДАКТИРОВАТЬ: добавлено предложение if (где проверяется владелец) в примере кода.
Я исследовал больше и выяснил, что проблема в if (owner != null && owner.size() > 0) {
, а точнее, в имени переменной owner
. Когда я меняю имя на что-то еще, проблема исчезла. Было бы очень интересно, если бы кто-то мог объяснить, почему это происходит.