Supondo que eu tenha duas tabelas Tab1 e Tab2 com os seguintes dados:
Tab1:
************
| id | nome |
-----------------------
| 1 | João |
| 2 | Maria |
| 3 | José |
| 4 | Juca |
**************
Tab2:
****************************
| id | Endereço | status |
-----------------------------
| 1 | Rua do João | null |
| 2 | Rua da Maria | Ativo |
| 3 | Rua do José | Inativo |
*****************************
Agora, considere as seguintes queries:
Query 1:
SELECT t1.nome, t2.endereco
FROM t1
LEFT JOIN t2
ON t2.codigo = t1.codigo AND t2.status = "Ativo"
Query 2:
SELECT t1.nome, t2.endereco
FROM t1
LEFT JOIN t2
ON t2.codigo = t1.codigo
WHERE t2.status ="Ativo"
Usando o Banco Oracle como base, a query 1 vai me dar o seguinte retorno:
**********************
| nome | Endereco |
------------------------
| João | null |
| Maria | Rua da Maria |
| José | null |
| Juca | null |
************************
A query 2 vai me dar o seguinte retorno:
***********************
| nome | Endereco |
------------------------
| Maria | Rua da Maria |
************************
A pergunta é, como fazer no JPQL uma consulta com o mesmo efeito da query 1 ?