Evitando objecto NULL em HQL onde cláusula
-
13-09-2019 - |
Pergunta
Eu tenho uma entidade que pode ter uma entidade pai. Eu quero executar esta consulta:
select entidade onde entity.parent.id = 9
alguma da entidade não tem pais (entity.parent = null) e N HIBERNATE falha para executar esta consulta (QueryException - não poderia propriedade resolver)
Como posso usar HQL para obter todas as entidades que tem pais entidades com id 9, evitando os que o pai é nulo?
(adicionando entity.parent não é nulo antes de os entity.parent.id = 9 resulta no mesmo excepção)
Há uma opção para usar uma instrução SELECT aninhadas, mas eu não acho que esta é a solução mais eficiente.
Solução
Está faltando uma cláusula from
na sua consulta HQL. Tente reescrevê-lo como este:
from entity where entity.parent is not null and entity.parent.id = 9
Não tenho certeza, mas provavelmente a parte entity.parent is not null
não é necessário. Suponho NHibernate irá lidar com este cenário.