1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Sistema de Estoque - List chamando outra List (Persistência)

Estou com um pequeno problema, em um sistema de Controle de Estoque, tenho três classes em questão:

  • Item, que tem id_item e nome.
  • A classe Pedido que tem id_pedido, List<ItemPedido> e um usuario_id.
  • E a classe ItemPedido, que tem id, id_item e id_pedido.

O Problema acredito eu, está no seguinte método:

    @SuppressWarnings("unchecked")
    public List<Pedido> listar() {
        this.session = HibernateUtil.getSessionFactory().openSession();
        try {
            //carregar os itens na consulta para não dar o problema N+1 select ou 
            // talvez uma LazyInitializeException.
            Criteria cri = this.session.createCriteria(Pedido.class)
                    .createCriteria("itemPedidos", Criteria.LEFT_JOIN);

            return cri.list();
        } finally {
            this.session.clear();
            this.session.close();
        }
    }

Quando invoco esse método na minha interface, ele me retorna uma lista de Pedido, porém se no meu pedido tiver 10 itens pedidos, ele vai me retornar 10 listas de Pedido, iguais. Já tentei trabalhar com distinct, groupProperty e forçar para não apontar LazyInitializationException.

Lembrando, que deixando o método do jeito que está, ele não aponta LazyInitializationException, porém acontece o erro de ele gerar listas conforme a quantidade de itens pedidos.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags arraylist hibernate lazy ou faça a sua própria pergunta.