Problemas com Hibernate Annotantions (Urgente!)

Boa tarde, pessoal.

Estou com um problema no mapeamento objeto-relacional de minhas classes que estão tirando o meu sono há 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?

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?

Pode ja ser meio tarde para responder, mas olhando seus atributos, vc tem certeza que precisa de um ManyToMany?!

Cada Usuario tem um pai e uma mae, logo um pai pode ter varios filhos, assim como uma mae tb pode ter varios filhos, porem um filho soh pode ter UM pai e UMA mae.

Entao meus filhos sao todos usuarios que tem como pai ou mae = eu, não vi tabela relacionada nisso ai

De qualquer forma, eu nunca vi esse erro, mas se vc ainda nao corrigiu eu posso dar uma olhada amanha… a principio (e eu sempre esqueco esses parametros, portanto não é algo exato), acho que tem erro nos parametros de @JoinTable