Estou usando o Hibernate num pequeno projeto e já fiz alguns relacionamentos, one-to-many e many-to-one com algumas tabelas.
Mas tem uma tabela que tem um relacionamento recursivo que não consegui fazer funcionar ainda.
Exemplo do caso que estou com problema:
Tabela Pessoa
Codigo int(11)
Nome varchar(40)
Codigo_pai int(11)
Codigo: 1, Nome: Fulano de Tal, Codigo_pai: 0
Codigo: 2, Nome: José da Silva, Codigo_pai: 1
São 2 problemas que preciso resolver:
como fazer esse relacionamento no hibernate
como permitir que em alguns casos ele aceite que não existe um codigo_pai
Se alguém puder ajudar, agradeço muito, pois já pesquisei em vários lugares e tentei de várias maneiras e não deu certo.
Um problema q tive foi quando, por exemplo o auto-relacionamento era com o próprio objeto (a base de dados q estou trabalhando é de um sistema legado e nesse sistema esse tipo de coisa podia acontecer)…
Não sei se existe uma maneira de contornar esse problema!!
Erro não mas não funciona como esperado.
Acontecem 2 coisas erradas:
Primeiro, não aceita que algum registro tenha o campo codigo_pai sem um correspondente, ou seja, com valor=0.
Segundo, ao invés de trazer o registro correspondente, traz o mesmo, como se o codigo_pai estivesse indicando o próprio registro!
pessoaPai teria que me retorna o registro correspondente ao pai e pessoaFilho foi colocado para fazer o inverso, ou seja, trazer todos que tiverem um mesmo pai.
Valeu, louds, obrigada, agora está trazendo o pai correspondente!!!
Só que no caso de eu não ter um pai, ou seja, codigo_pessoa_pai = 0, está dando exception… tem como resolver isso também?
Senão vai ficar um relacionamento infinito, concorda?
[quote=“ana_abrantes”]Valeu, louds, obrigada, agora está trazendo o pai correspondente!!!
Só que no caso de eu não ter um pai, ou seja, codigo_pessoa_pai = 0, está dando exception… tem como resolver isso também?
Senão vai ficar um relacionamento infinito, concorda?[/quote]
porque fica codigo_pessoa_pai = 0? deveria ficar “null”. Então o objeto pessoaPai simplesmente estará null se não existir pai.
Se eu deixar o atributo pessoaPai (que é da classe Pessoa) com ‘null’, dá NullPointerException na hora que eu mando executar o método ‘save’ em Pessoa…
troca o tipo no objeto para Integer em vez de int que funciona direitinho, ai quando não tiver nada associado fica como null, que representa exatamente isto.
PS.: desculpe se ja sugeriram isto, mas realmente não li todas as mensagens da thread.