Introdução sobre JPQL

É uma linguagem de consulta específica da JPA.

Toda ferramente ORM geralmente possui uma linguagem ou ferramentas próprias para realização de consulta a banco de dado.

A JPQL é parecida com a SQL, porém é adaptado para modelo de acesso a dados JPA.

Exemplo 1

SQL:

SELECT *
FROM tb_employee
WHERE UPPER(name) LIKE 'MARIA%'

JPQL

SELECT obj

//não escrevemos a tabela e sim Entidade + obj
FROM Employee obj
//obj.name pois estamos acessando o atributo
WHERE UPPER(obj.name) LIKE 'MARIA%'

Exemplo 2

SQL:

SELECT tb_employee.*
FROM tb_employee
INNER JOIN tb_department ON tb_department.id = tb_employee.department_idWHERE tb_department.name = 'Financeiro'

JPQL:

SELECT obj
           
//não escrevemos a tabela e sim Entidade + obj
FROM Employee obj

//obj.department (para acessar dep dentro de employee) + .name para acessar o nome de department
WHERE obj.department.name = 'Financeiro'

Atualizado