[Resolvido]Problema com sessão hibernate - associate a collection with two open sessions

Pessoal Boa tarde,

Estou com problema referente a abertura e fechamento de sessões do hibernate.

Ao tentar atualizar um objeto que contem relacionamento @ManyToOne com outros objeto, ocorre o seguinte erro:

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

Com esse problema me surgiu uma dúvida, eu só preciso fechar minha sessão quando eu tenho uma transação?

Abaixo a classe que cria a factory:


public class ConnectionFactory {

	private static final SessionFactory sessionFactory;
	private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();

	static {
		try {
			sessionFactory = new AnnotationConfiguration().configure(
					"hibernate.cfg.xml").buildSessionFactory();
		} catch (Throwable th) {
			throw new ExceptionInInitializerError(th);
		}
	}

	public static Session getInstance() {
		Session session = (Session) threadLocal.get();
		session = sessionFactory.openSession();
		threadLocal.set(session);
		
		return session;
	}
}

Classe dao que está ocorrendo o problema:

public class Cota_030Dao implements Cota_030Inter {

	private Session session = null;
	
	
	@Override
	public void salvar(Cota_030 itemTabela) {
		session = ConnectionFactory.getInstance();
		Transaction tx = null;
		try {
			tx = session.beginTransaction();
			session.save(itemTabela);
			tx.commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			tx.rollback();
		} finally {
			session.close();
		}
		
	}

	@Override
	public void excluir(Cota_030 itensTabela) {
		session = ConnectionFactory.getInstance();
		Transaction tx = null;
		try {
			tx = session.beginTransaction();
			session.delete(itensTabela);
			tx.commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			tx.rollback();
		} finally {
			session.close();
		}
		
	}

	@Override
	public void atualizar(Cota_030 itensTabela) {
		session = ConnectionFactory.getInstance();
		Transaction tx = null;
		try {
			tx = session.beginTransaction();
			session.update(itensTabela);
			tx.commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			tx.rollback();
		} finally {
			session.close();
		}
		
	}


	@Override
	public Cota_030 getItemPorID(int codItem) {
		session = ConnectionFactory.getInstance();
		Cota_030 cota_030 = (Cota_030)session.get(Cota_030.class, codItem);
		return cota_030;
	}

}

Alguém poderia me ajudar?

Boa Tarde ,

Eu alterei a minha classe de conexão para o exemplo citado nesse tópico http://www.guj.com.br/java/128701-como-abrir-sessao-no-hibernate-
porém ocorre o mesmo erro.

Ta difícil , talvez seja problema em meus relacionamentos.