Нужно ли защищать нулями в моем hql-запросе? - PullRequest
0 голосов
/ 12 января 2019

Скажем, у меня есть компания с номером телефона. У меня может быть ведущий отчет, и я хочу получить номер телефона. Должен ли я сначала убедиться, что моя компания не пуста?

Вариант 1

FROM Lead l WHERE l.company IS NOT NULL AND l.company.phone = :phone

Вариант 2

FROM Lead l WHERE l.company.phone = :phone

В варианте 1 я проверяю, что компания не является нулевой, прежде чем проверять телефон. В варианте 2 я предполагаю, что у hibernate есть способ замкнуть это.

Я пытался искать, но не могу найти документацию по этому факту. Я также на мобильном банкомате, что затрудняет мой поиск (и мою публикацию!)

1 Ответ

0 голосов
/ 12 января 2019

Нет, нет. where l.company.phone = :phone эквивалентно inner join l.company c where c.phone = :phone, и внутреннее объединение просто отфильтровывает сущности с нулевой компанией.

Эти запросы в конечном итоге преобразуются в SQL и выполняются базой данных. Они не используют ваши Java-сущности. Соответствующий SQL-запрос будет выглядеть как

from lead l, company c where l.company_id = c.id and c.phone = :phone

Простой тест позволил бы вам выяснить это самостоятельно, кстати.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...