Problemas com Hibernate Annotantions (Urgente!)

0 respostas
vinny767

Boa tarde, pessoal.

Estou com um problema no mapeamento objeto-relacional de minhas classes que estão tirando o meu sono  varias noites.
Tenho procurado material, mas realmente tenho encontrado pouquissima coisa de onde pode-se retirar algo.

Meu problema é o seguinte... Tenho uma classe que possui um auto-relacionamento. A classe se chama Usuario. Dentro dessa classe, ela possui um atriburo pai, mae e lista de filhos. Todos eles também da classe usuario. Segue a classe:
@Entity
@Table(name="tbl_usuario")
public class Usuario {
	
	@Id
	@SequenceGenerator(name = "SEQ", sequenceName = "seq_usuario", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ")
	@Column(name="id_usuario")
	private Long id; 
	
	@Column(name="nome")
	private String   nomeCompleto;
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="id_pai", referencedColumnName="id_usuario", updatable=true, insertable=true)
	private Usuario pai;
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="id_mae", referencedColumnName="id_usuario", updatable=true, insertable=true)
	private Usuario mae;
	
	@ManyToMany
	@JoinTable(name="tbl_filhos", joinColumns=@JoinColumn(name="id_usuario", referencedColumnName="id_usuario"),
	inverseJoinColumns=@JoinColumn(name="id_filho", referencedColumnName="id_usuario"))
	private List<Usuario>  listaDeFilhos = new ArrayList<Usuario>();
	
	 //Getters and Setters

Minha primeira dúvida é a seguinte:

Sempre que tento atualizar um usuario a atualização funciona sem problemas, desde que a eu não atualize um objeto Usuario (o atributo pai, mae ou listaDeFilhos).
Quando tento atualizar um destes atributos, ocorre erro. O mapeamento destes tres atributos estao corretos?

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

E minha outra dúvida é a seguinte: Um filho pode ser adotado. Por causa deste unico atributo, eu tive que criar uma outra tabela no BD e uma classe Filho que extende Usuario. Que tipo de Annotations eu preciso fazer para indicar ao Hibernate que a classe filho é subclasse da classe usuario?

Obrigado!!!

Criado 23 de março de 2009
Respostas 0
Participantes 1