Как избежать NULL-объекта в HQL Query where - PullRequest
1 голос
/ 07 декабря 2009

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

выберите объект, где entity.parent.id = 9

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

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

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

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

1 Ответ

2 голосов
/ 07 декабря 2009

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

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

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

...