NonUniqueObjectException em aplicação WEB

Tenho uma aplicação WEB de loja virtual usando Hibernate 3. Quando o cliente faz login, carrego seus dados do banco assim como todos os seus pedidos já feitos.
Ao criar um novo Pedido a aplicação lança NonUniqueObjectException quando tenta salvar o pedido. O erro ocorre na chamada a saveOrUpdate(pedido).
Sei que este erro ocorre quando tentamos usar um objeto igual ao que já está atachado à session do Hibernate. O que eu não entendo é que sempre fecho a sessão a cada chamada de método, isso não deveria acontecer, eu acho…
O fluxo é o seguinte:

  1. Load Cliente (tem Pedidos, ItemPedido e Produto atachados a ele)
  2. session.close();
  3. Cria new Pedido
  4. saveOrUpdate(pedido)
  5. exceção lançada.

Alguém tem alguma idéia?

cara, vc pode forçar com q o objeto seja removido da sessão…pq ao chamar o metodo close() vc fecha a conexão com o banco…mas não mata o cache do hibernate…

faz o seguinte, antes de chamar o metodo saveOrUpdate(), adiciona a seguinte linha:

session.evict(pedido);

espero ter ajudado…

opa,

você pode usar o merge:

sessio.merge(pedido)

:joia:

No meu caso, o merge funcionou, porem quando consulto novamente o mesmo objeto que foi gravado e tento alterar-ló pela segunda vez ocorre o mesmo problema.
Alguem consegue uma explicação lógica pra este erro e/ou alguma possível solução?
Obrigado.