Acho que aqui é mais apropriado…
Estou com um probleminha pra resolver mas ainda não cheguei a uma conclusão real.
Tenho uma classe:
[code]@Entity
public class Pessoa {
@Id
private int id;
private String nome;
private Pessoa pai;
private Pessoa filho;
gets and sets
}[/code]
Preciso mapear essa classe no banco de dados. Estou utilizando, EJB3, Hibernate.
Alguém pode me dar uma luz de como vai ficar a tabela no banco de dados e o relacionamento (annotations) na classe?
Muito obrigado
Abraço
Bem, o hibernate já faz a tabela no banco, não?
Classe recursiva??? :shock:
Haha
Mais ou menos isso…
Uma classe que tem como atributo um obj do seu próprio tipo…
No caso uma pessoa tem um pai que tbm é uma pessoa.
Cara, nunca gerei as tabelas do bd pelo hibernate.
Pelo seu modelo, um pai pode ter apenas um filho… está correto?
Vc pode usar JPA para mapear…
ex.:
@ManyToOne
@JoinColumn(name = "ID_PAI", nullable = false)
public Pessoa getPai() {
return this.pai
}
No BD isto deve virar uma coluna com o id referenciando outra linha da tabela…
[quote=robertol]Pelo seu modelo, um pai pode ter apenas um filho… está correto?
Vc pode usar JPA para mapear…
ex.:
@ManyToOne
@JoinColumn(name = "ID_PAI", nullable = false)
public Pessoa getPai() {
return this.pai
}
No BD isto deve virar uma coluna com o id referenciando outra linha da tabela…[/quote]
Blz Roberto,
Na verdade uma Pessoa vai ter UM pai e pode ter UM ou MAIS filhos…
Não entendo como ficaria a criação do bd com uma linha referenciando outra. =S
Abraço
no BD será criada um FK com referencia para a propria tabela… algo assim:
alter table pessoa
add constraint fk_pessoa_pai foreign key (id_pai) references pessoa(id)
Ou seja, a coluna da linha que representa o filho referenciará o id da linha que representa o pai.
Para ter mais de um filho, vc deve mapear como List<Pessoa> e usar mapeamento OneToMany, preferencialmente no seu getter.
Qualquer dúvida posta aí!
[quote=robertol]no BD será criada um FK com referencia para a propria tabela… algo assim:
alter table pessoa
add constraint fk_pessoa_pai foreign key (id_pai) references pessoa(id)
Ou seja, a coluna da linha que representa o filho referenciará o id da linha que representa o pai.
Para ter mais de um filho, vc deve mapear como List<Pessoa> e usar mapeamento OneToMany, preferencialmente no seu getter.
Qualquer dúvida posta aí!
[/quote]
Valeu Roberto…
Vou ar uma testada e qlq coisa grito…
abraço
Blz!
Qualquer dúvida, posta aê que a gente ajuda!