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.
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!!
A
ana_abrantes
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!
A
ana_abrantes
Eis o mapeamento desta classe para vocês me entenderem melhor:
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.
louds
Ana vc ta com o mapping errado, comparei com um caso onde tive o mesmo problema e creio que o correto seja:
Note que a diferença esta em many-to-one -> column
A
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?
ricardolecheta
“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?
porque fica codigo_pessoa_pai = 0? deveria ficar “null”. Então o objeto pessoaPai simplesmente estará null se não existir pai.
A
ana_abrantes
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…
ricardolecheta
impossível
Se vc fizer assim, da NullPointer ? Veja a linha do NullPointer, pode ser em outro lugar, manda o stackTrace
Está mais ou menos assim, é que eu não estou com o código aqui agora…
Só à noite que vou poder mexer nele de novo.
O campo PESSOA_PAI do form é um select com todas as pessoas e eu acrescentei uma com o código 0 e descrição em branco para este caso de não ter o pai.
A
ana_abrantes
Verifiquei e é isto mesmo que eu tinha postado anteriormente.
Sei lá, acho que se eu tiver que criar uma pessoa com código zero é estranho demais! :shock:
Tem mais alguma sugestão para me dar, Ricardo… louds… ?
urubatan
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.
S
slmasked
estou com o mesmo problema da ana…
alguém poderia dar umas dicas…urgente…