Hibernate. Erro ao salvar. tentativa de associar coleção a 2 sessoes

1 resposta
R

Quando eu salvo uma alteração, recebo essa mensagem no hibernate.

org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions.

Meu código para salvar é esse:

public static void salvar(Object objeto) { Session session = HibernateUtil.getSession(); Transaction transacao = session.beginTransaction(); try { session.saveOrUpdate(objeto); transacao.commit(); } finally{ session.close(); } }

1 Resposta

R

Descobri o erro, eu estava criando 2 sessoes no meu select. Mas não entendi muito. Veja que eu crio o criteria em outra sessao, em HibernateUtil.getSession().createCriteria(Cliente.class).
Nesse caso, como nao ficou nenhuma referência para a sessao do createCriteria, as sessoes nao seria destruídas pelo GC ?
Pois, ele retorna a coleção e pronto. Não fica mais referências para as seções.

public static List<Cliente> getClientes(String nome){ if (nome != null && nome.trim() != ""){ Session session = HibernateUtil.getSession(); Transaction transaction = session.beginTransaction(); nome = nome.trim(); try { Criteria crit = HibernateUtil.getSession().createCriteria(Cliente.class); crit.add( Expression.ilike("nome", nome, MatchMode.ANYWHERE)); crit.addOrder( Order.asc("nome") ); return crit.list(); } finally { transaction.commit(); session.close(); } } return null;

Criado 3 de maio de 2005
Ultima resposta 3 de mai. de 2005
Respostas 1
Participantes 1