Избегание объекта NULL в HQL Query where

У меня есть объект, который может иметь родительский объект. Я хочу выполнить этот запрос:

выберите сущность, где entity.parent.id = 9

некоторые из сущностей не имеют родителей (entity.parent = null) и N HIBERNATE не в состоянии выполнить этот запрос (QueryException - Не удалось разрешить свойство)

Как я могу использовать HQL, чтобы получить все сущности, у которых есть родительские сущности с идентификатором 9, избегая тех, у которых родитель имеет нулевое значение?

(добавление entity.parent не равно нулю до того, как entity.parent.id = 9 приведет к тому же исключению)

Существует возможность использовать вложенные операторы select, но я не думаю, что это наиболее эффективное решение.

1 ответ

Решение

Вам не хватает from предложение в вашем HQL-запросе. Попробуйте переписать это так:

from entity where entity.parent is not null and entity.parent.id = 9

Не уверен, но, вероятно, entity.parent is not null часть не нужна. Я полагаю, NHibernate справится с этим сценарием.

Другие вопросы по тегам