Here is my best shot, class names may vary
CriteriaBuilder qb = entityMan.getCriteriaBuilder();
CriteriaQuery<Pedido> criteriaQuery = qb.createQuery(Pedido.class);
Root<Pedido> root = criteriaQuery.from(Pedido.class);
Join<Pedido, Cliente> cliente = root.join(Pedido_.id_cliente, JoinType.LEFT);
Join<Cliente, ClientePessoaFisica> clientePessoaFisica = cliente.join(Cliente_.id, JoinType.LEFT);
Join<Pedido, FormaPagamento> formaPagamento = root.join(Pedido_.id_forma_pagamento, JoinType.LEFT);
Join<Pedido, TipoPagamento> tipoPagamento = root.join(Pedido_.id_tipo_pagamento, JoinType.LEFT);
Join<Pedido, StatusPedido> statusPedido = root.join(Pedido_.id_status_pedido, JoinType.LEFT);
Join<Pedido, Itempedido> itempedido = root.join(Pedido_.id, JoinType.LEFT);
Join<Itempedido, Produto> produto = itempedido.join(Itempedido_.id_produto, JoinType.LEFT);
criteriaQuery.multiselect(root.get("id"), root.get("valor_total"), formaPagamento.get("descricao"));
TypedQuery<Pedido> query = entityMan.createQuery(criteriaQuery);
return query.getResultList();
source
share