Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Specification JPA - Como utilizar o operador AND

Olá a todos, fiquei com uma dúvida na questão do Specification da aula de Java

No caso como ficaria uma query no specification caso eu fosse usar o operador AND

Exemplo:

- Quero a lista de escolas em que o diretor é brasileiro e a escola é de São Paulo (SP)

Query SQL:

select es from escola es

inner join diretor dir on dir.id = es.diretor_id

where es.uf = 'SP'

and dir.nacionalidade = 'Brasileiro'

Como ficaria essa query em specification?

Obrigado desde já a todos

3 respostas
solução!

Olá!

Para utilizar o operador AND em uma Specification, você pode utilizar o método and() do objeto CriteriaBuilder.

Segue abaixo um exemplo de como ficaria a Specification para a sua query:

public static Specification<Escola> escolaComDiretorBrasileiroESaoPaulo() {
    return (root, query, criteriaBuilder) -> {
        Join<Escola, Diretor> joinDiretor = root.join("diretor");
        Predicate predicate1 = criteriaBuilder.equal(joinDiretor.get("nacionalidade"), "Brasileiro");
        Predicate predicate2 = criteriaBuilder.equal(root.get("uf"), "SP");
        return criteriaBuilder.and(predicate1, predicate2);
    };
}

Espero ter ajudado e bons estudos!

Olá Otávio. Maravilha, obrigado pelo suporte.

Por nada amigo, precisando de algo estamos ai :)