Mapeamento/Collection - Hibernate 3

4 respostas
janones

Boa tarde,

Estou com o seguinte erro: Illegal attempt to associate a collection with two open sessions

Gostaria de saber como resolver isso? Já procurei se existe 2 seções abertar e nada…

Segue o mapeamento que estou usando…
Para fazer o insert ele funciona, mas na hora de usar o update dá o erro.

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="pessoa", targetEntity=PessoaCategoria.class)
@LazyToOne(LazyToOneOption.PROXY)
@Fetch(FetchMode.JOIN)
public Collection<PessoaCategoria> getPessoasCategoria() {
       return pessoasCategoria;
}

Alguém poderia me ajudar?

Vinícius

4 Respostas

guilherme.chapiewski

Poderia postar também o código do SessionFactory e de como você obtém sessions?

janones
private static final SessionFactory sessionFactory;
	
	static {
		try {
			sessionFactory = new AnnotationConfiguration()
			.configure("/WEB-INF/hibernate.cfg.xml")
			.buildSessionFactory();
			
		} catch (Throwable ex) {
			ex.printStackTrace();
			throw new ExceptionInInitializerError(ex);
		}
	}
	
	public static Session getSession() throws HibernateException {
		return sessionFactory.openSession();
	}
guilherme.chapiewski

Sua aplicação é Web? Provavelmente você está usando a mesma session para várias threads o que está causando este problema.

Você poderia utilizar uma implementação de SessionFactory com ThreadLocal que corrige este problema: http://www.hibernate.org/207.html

Existem outras implementações possíveis, sugiro que você dê uma pesquisada.

Abraços,
Guilherme

janones

guilherme.chapiewski:
Sua aplicação é Web? Provavelmente você está usando a mesma session para várias threads o que está causando este problema.

Você poderia utilizar uma implementação de SessionFactory com ThreadLocal que corrige este problema: http://www.hibernate.org/207.html

Existem outras implementações possíveis, sugiro que você dê uma pesquisada.

Abraços,
Guilherme

Guilherme,

Obrigado pela ajuda, vou dar uma estudada neste exemplo que vc me passou.

No fim acho que não vou precisar usar essa Collection, vou fazer um mapeamento diferente.

Valeu.

Obraços
Vinícius

Criado 13 de fevereiro de 2007
Ultima resposta 14 de fev. de 2007
Respostas 4
Participantes 2