[RESOLVIDO] JPA como mapear dados de uma tabela que está em 2 POJOS?

2 respostas
D


https://picasaweb.google.com/lh/photo/Xz3SNI9Rms4gNfQv4FOcxQ?feat=directlink
[size=18]olá meus amigos do devmedia, puts eu procurei abeça e não encontrei uma resposta para a minha dúvida
eu criei essa imagem basica para mostrar a minha dúvida.

eu tenho uma tabela pessoa q tem os dados acima, bem, todos os atributos da tabela iniciados com “end”
faz parte do grupo de dados referente ao endereco da pessoa, então decidi criar uma classe separada para
representar logicamente esse conjunto de dados.

agora vem a minha dúvida, com ANOTATIONS, como eu faço pra quando for salvar a PESSOA, ele registrar ao
mesmo tempo os dados da classe ENDEREÇO ?!

alguem me dá uma luz como seria esse mapeamento ???[/size]

2 Respostas

D

Olá,

De acordo com sua modelagem, o relacionamento é uma Pessoa tem um Endereço certo?

Então voce deverá utilizar a annotation @OneToOne na sua Entity.

E para que o Endereço seja salvo junto com o Pessoa na base de uma vez, voce deve preencher o objeto Endereço com os dados provindos da tela, setar dentro do objeto Pessoa, e na hora que for salvar na base, apenas a Pessoa precisa ser salvo, lembre-se de usar o cascade, pois assim o hibernate cuidará do resto.

Abraços
Daniel.

D

olá,

após muita pequisa descobri como fazer o q eu quero, …
espero servir para outros que se depararem com o mesmo problema que o meu.

o mapeamento entre as duas classes é feito utilizando @Embeddable e @Embedded

@Embeddable : vc define a classe que terá seus dados incluídos em uma Entity, o @Embeddable substitui o @Entity na classe, nesse caso Classe Endereço

@Embedded: vc define no atributo na classe Entity, que aquela classe possui um conjunto de dados que fazem parte de @Entity

exemplo:

Classe Pessoa que possui um atributo Endereco que por sua vez contem um conjunto de atributos que fazem parte de Pessoa

@Entity
@Table(name="pessoa")
public class Pessoax implements java.io.Serializable{

    @Id
    private Integer id;
    @Column
    private String nome;
    @Embedded //indica que os atributos desse atributo fará parte da tabela pessoa
    private Endereco endereco;
  
    ... implementação dos gettes e setters
}

Classe Endereco que possui um conjunto de dados que será colocados na tabela Pessoa no DB

@Embeddable
public class Endereco implements Serializable {

    @Column
    private String cep;
    @Column
    private String logradouro;

   ....
}

ESPERO QUE SEJA ÚTIL

Criado 5 de junho de 2011
Ultima resposta 6 de jun. de 2011
Respostas 2
Participantes 2