Digamos que eu tenha as seguintes entidades a seguir:
@Entity
public class Pessoa {
...
private Endereco endereco;
...
}
@Entity
public class Endereco {
...
private Logradouro logradouro;
...
}
@Entity
public class Logradouro {
...
private String rua;
private String cep;
...
}
estou criando minhas Specifications como as da aula. Exemplo
public static Specification<PessoaModel> logradouro(Integer logradouroId) {
if (logradouroId != null) {
return ((root, criteriaQuery, criteriaBuilder) ->
criteriaBuilder.equal(root.get("pessoa").get("endereco").get("logradouroId")., logradouroId));
} else {
return null;
}
}
Como faço pra criar uma specification pra uma busca (findAll()) por Pessoa pelo id do Logradouro?
Em SQL seria mais ou menos isso:
SELECT p.* FROM Pessoa p
JOIN Endereco e on p.pessoa_id = e.pessoa_id
JOIN Logradouro l on e.logradouro_id = l.logradouro_id
where l.logradouro_id = 10;