Boa tarde galera!
Estou com a seguinte dúvidas eu tenho 2 entidades no banco de dados, Pessoa e PessoaTelefone, onde PessoaTelofone contem todos os telefones da Pessoa já fiz o mapeamento os POJOS mais eu só consigo inserir dados da Pessoa nao estou conseguindo inserir dados na PessoaTelefone, quando eu coloco os dados de telefone retorna uma exception>:
09/12/2010 14:41:54 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
SEVERE: Unsuccessful: alter table TESTE.PESSOATELEFONE add constraint FK88F6C791EA1271AC foreign key (CODIGOPESSOA) references TESTE.PESSOA
09/12/2010 14:41:54 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
SEVERE: ORA-02275: esta restrição referencial já existe na tabela
Abaixo os Pojos:
package model;
// Generated 09/12/2010 10:05:24 by Hibernate Tools 3.2.1.GA
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
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 String sexo;
private Date datanascimento;
private List<Pessoatelefone> pessoatelefones = new ArrayList<Pessoatelefone>();
public Pessoa() {
}
public Pessoa(int codigo) {
this.codigo = codigo;
}
public Pessoa(int codigo, String nome, String sexo, Date datanascimento, List pessoatelefones) {
this.codigo = codigo;
this.nome = nome;
this.sexo = sexo;
this.datanascimento = datanascimento;
this.pessoatelefones = pessoatelefones;
}
@Id
@GeneratedValue(generator="PESSOA_SEQ", strategy=GenerationType.SEQUENCE)
@Column(name = "CODIGO")
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 String getSexo() {
return this.sexo;
}
public void setSexo(String 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(mappedBy = "pessoa", targetEntity = Pessoatelefone.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
public List getPessoatelefones() {
return this.pessoatelefones;
}
public void setPessoatelefones(List pessoatelefones) {
this.pessoatelefones = pessoatelefones;
}
}
package model;
// Generated 09/12/2010 10:05:24 by Hibernate Tools 3.2.1.GA
import java.math.BigDecimal;
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.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
* 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 BigDecimal codigopessoatelefone;
private Pessoa pessoa;
private String numerotelefone;
public Pessoatelefone() {
}
public Pessoatelefone(BigDecimal codigopessoatelefone) {
this.codigopessoatelefone = codigopessoatelefone;
}
public Pessoatelefone(BigDecimal codigopessoatelefone, Pessoa pessoa, String numerotelefone) {
this.codigopessoatelefone = codigopessoatelefone;
this.pessoa = pessoa;
this.numerotelefone = numerotelefone;
}
@Id
@GeneratedValue(generator = "PESSOATELEFONE_SEQ", strategy = GenerationType.SEQUENCE)
@Column(name = "CODIGOPESSOATELEFONE")
public BigDecimal getCodigopessoatelefone() {
return this.codigopessoatelefone;
}
public void setCodigopessoatelefone(BigDecimal codigopessoatelefone) {
this.codigopessoatelefone = codigopessoatelefone;
}
@ManyToOne(targetEntity = Pessoa.class, 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;
}
}
Abaixo como tento inserir
public void salvar() {
Pessoa pessoa = new Pessoa();
pessoa.setNome("Pessoa 1");
pessoa.setSexo("M");
List<Pessoatelefone> listaTelefone = new ArrayList<Pessoatelefone>();
Pessoatelefone telefone = new Pessoatelefone();
telefone.setNumerotelefone("11-11111111");
listaTelefone.add(telefone);
telefone = new Pessoatelefone();
telefone.setNumerotelefone("22-22222222");
listaTelefone.add(telefone);
pessoa.setPessoatelefones(listaTelefone);
EntityManagerFactory emf = null;
EntityManager em = null;
try {
emf = Persistence.createEntityManagerFactory("teste");
em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(pessoa);
em.flush();
em.getTransaction().commit();
} catch (Exception e) {
em.getTransaction().rollback();
} finally {
if (em != null) {
em.close();
}
if (emf != null) {
emf.close();
}
}
}
Alguém poderia me ajudar?
Valeu.