Curso: Curso Java e JPA: Otimizações com JPA2 e Hibernate
Aula 03: Consultas dinâmicas com Criteria API
Por que lojaPath não tem root.join enquanto categoriaPath tem ?
...
public List<Produto> getProdutos(String nome, Integer categoriaId, Integer lojaId) {
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Produto> query = criteriaBuilder.createQuery(Produto.class);
Root<Produto> root = query.from(Produto.class);
Path<String> nomePath = root.<String> get("nome");
Path<Integer> lojaPath = root.<Loja> get("loja").<Integer> get("id");
Path<Integer> categoriaPath = root.join("categorias").<Integer> get("id");
...