Bom dia pessoal!
Estou com o seguinte problema tenho duas tabelas: Pessoa e Pessoatelefone onde Pessoatelefone contem todos o telefone da pessoa.
Estou usando hibernate jpa para inserir os dados mais quando eu insiro, são inseridos os dados na tabela Pessoa e Pessoatelefone mais a FK da tabela Pessoatelefone fica NULL.
Alguém pode me ajudar?
Pessoa.java
package model;
// Generated 10/12/2010 17:37:30 by Hibernate Tools 3.2.1.GA
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* Pessoa generated by hbm2java
*/
@Entity
@Table(name = "PESSOA", schema = "TESTE")
@SequenceGenerator(name="PESSOA_SEQ", sequenceName="PESSOA_SEQ", allocationSize=1)
public class Pessoa implements java.io.Serializable {
private int codigo;
private String nome;
private Character sexo;
private Date datanascimento;
private Set pessoatelefones = new HashSet(0);
public Pessoa() {
}
public Pessoa(int codigo) {
this.codigo = codigo;
}
public Pessoa(int codigo, String nome, Character sexo, Date datanascimento, Set pessoatelefones) {
this.codigo = codigo;
this.nome = nome;
this.sexo = sexo;
this.datanascimento = datanascimento;
this.pessoatelefones = pessoatelefones;
}
@Id
@Column(name = "CODIGO")
@GeneratedValue(generator="PESSOA_SEQ", strategy=GenerationType.SEQUENCE)
public int getCodigo() {
return this.codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
@Column(name = "NOME", length = 50)
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Column(name = "SEXO", length = 1)
public Character getSexo() {
return this.sexo;
}
public void setSexo(Character sexo) {
this.sexo = sexo;
}
@Temporal(TemporalType.DATE)
@Column(name = "DATANASCIMENTO", length = 7)
public Date getDatanascimento() {
return this.datanascimento;
}
public void setDatanascimento(Date datanascimento) {
this.datanascimento = datanascimento;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pessoa", targetEntity=Pessoatelefone.class)
public Set getPessoatelefones() {
return this.pessoatelefones;
}
public void setPessoatelefones(Set pessoatelefones) {
this.pessoatelefones = pessoatelefones;
}
}
Pessoatelefone.java
package model;
// Generated 10/12/2010 17:37:30 by Hibernate Tools 3.2.1.GA
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
/**
* Pessoatelefone generated by hbm2java
*/
@Entity
@Table(name = "PESSOATELEFONE", schema = "TESTE")
@SequenceGenerator(name="PESSOATELEFONE_SEQ", sequenceName="PESSOATELEFONE_SEQ", allocationSize=1)
public class Pessoatelefone implements java.io.Serializable {
private int codigopessoatelefone;
private Pessoa pessoa;
private String numerotelefone;
public Pessoatelefone() {
}
public Pessoatelefone(int codigopessoatelefone) {
this.codigopessoatelefone = codigopessoatelefone;
}
public Pessoatelefone(int codigopessoatelefone, Pessoa pessoa, String numerotelefone) {
this.codigopessoatelefone = codigopessoatelefone;
this.pessoa = pessoa;
this.numerotelefone = numerotelefone;
}
@Id
@Column(name = "CODIGOPESSOATELEFONE")
@GeneratedValue(generator="PESSOATELEFONE_SEQ", strategy=GenerationType.SEQUENCE)
public int getCodigopessoatelefone() {
return this.codigopessoatelefone;
}
public void setCodigopessoatelefone(int codigopessoatelefone) {
this.codigopessoatelefone = codigopessoatelefone;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CODIGOPESSOA")
public Pessoa getPessoa() {
return this.pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
@Column(name = "NUMEROTELEFONE", length = 20)
public String getNumerotelefone() {
return this.numerotelefone;
}
public void setNumerotelefone(String numerotelefone) {
this.numerotelefone = numerotelefone;
}
}
metodo salvar
public void salvar() {
Pessoa pessoa = new Pessoa();
pessoa.setNome("Pessoa 1");
pessoa.setPessoatelefones(new HashSet<Pessoatelefone>());
Pessoatelefone telefone = new Pessoatelefone();
telefone.setNumerotelefone("11-111111");
pessoa.getPessoatelefones().add(telefone);
EntityManagerFactory emf = null;
EntityManager em = null;
try {
emf = Persistence.createEntityManagerFactory("teste");
em = emf.createEntityManager();
em.getTransaction().begin();
em.merge(pessoa);
em.flush();
em.getTransaction().commit();
} catch (Exception e) {
em.getTransaction().rollback();
} finally {
if (em != null) {
em.close();
}
if (emf != null) {
emf.close();
}
}
}