Olá Pessoal, estou com dificuldade em criar uma consulta em JPQL. Em SQL eu consigo. Estou usando PostgreSql. Meu caso é o seguinte: tenho uma entidade Principal que se relaciona com uma entidade chamada Especies.
Há uma relacionamento 1:N (Principal especieID x Especies id).
As colunas importantes destas tabelas são: Principal (id (Long); especieid (Especies)). Especies (id (Long), especie (String)).
Eu quero contar quantas espécies estão sem identificação, só que no banco existem duas formas de espécies não identificadas: 1ª quando na tabela Principal a coluna especieID é igual a nulo; 2ª quando na tabela principal está relacionada com a espécie que foi chamada de “Não Informado”;
Em SQL minha consulta ficou assim:
Select COUNT(Distinct(principal.id))
From Principal, Especie
Where principal.especieid IsNull OR (principal.especieid = especie.id
AND Lower(especie.especie) = 'não informado')
Resultado = 17 (são 15principal.especieid = Null e 2 principal.especieid.especie = "não informado")
Em JPQL tentei fazer assim:
SELECT Count(p.id) From Principal p
Where p.especieid Is Null OR p.especieid.especie = 'Não Informado'
Resultado = 2 (principal.especieid.especie = "não informado")
Contudo se eu faço duas JPQLs diferentes, separando o as sentenças antes e depois do OR ele traz corretamente, só que em duas consultas separadas:
SELECT Count(p.id) From Principal p
Where p.especieid Is Null
Resultado = 15
SELECT Count(p.id) From Principal p
Where p.especieid.especie = 'Não Informado'
Resultado = 2
Como eu poderia escrever a consulta SQL em JPQL?