Fórum Problema JPA OneToOne bidirecional #520246
19/05/2015
0
Criei duas classes Pessoa e Endereco. Pessoa tem um Endereco e Endereco também tem uma Pessoa mas na hora de gravar no banco de dados a tabela endereços não está criando a chave estrangeira que vem de pessoas. Abaixo as três classes, alguém poderia ajudar?
@Entity
@Table(name="enderecos")
public class Endereco {
@Id
@GeneratedValue
private long id;
private String nomeRua;
@OneToOne(mappedBy="endereco")
private Pessoa pessoa;
/**
* @return the id
*/
public long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(long id) {
this.id = id;
}
/**
* @return the nomeRua
*/
public String getNomeRua() {
return nomeRua;
}
/**
* @param nomeRua the nomeRua to set
*/
public void setNomeRua(String nomeRua) {
this.nomeRua = nomeRua;
}
/**
* @return the pessoa
*/
public Pessoa getPessoa() {
return pessoa;
}
/**
* @param pessoa the pessoa to set
*/
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
}@Entity
@Table(name="pessoas")
public class Pessoa {
@Id
@GeneratedValue
private long id;
private String nomePessoa;
@OneToOne
private Endereco endereco;
/**
* @return the id
*/
public long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(long id) {
this.id = id;
}
/**
* @return the nomePessoa
*/
public String getNomePessoa() {
return nomePessoa;
}
/**
* @param nomePessoa the nomePessoa to set
*/
public void setNomePessoa(String nomePessoa) {
this.nomePessoa = nomePessoa;
}
/**
* @return the endereco
*/
public Endereco getEndereco() {
return endereco;
}
/**
* @param endereco the endereco to set
*/
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
}
public class Executa {
public static void main(String[] args){
EntityManager manager = JPAUtil.getEntityManager();
Pessoa pessoa = new Pessoa();
Endereco endereco = new Endereco();
pessoa.setNomePessoa("Pedro Paulo");
endereco.setNomeRua("Massaharu Tanigushi");
pessoa.setEndereco(endereco);
endereco.setPessoa(pessoa);
manager.getTransaction().begin();
manager.persist(pessoa);
manager.persist(endereco);
manager.getTransaction().commit();
manager.close();
System.out.println("Gravado com sucesso");
}
}Paulo Henrique
Curtir tópico
+ 0Posts
19/05/2015
Ronaldo Lanhellas
public class Executa {
public static void main(String[] args){
EntityManager manager = JPAUtil.getEntityManager();
Pessoa pessoa = new Pessoa();
Endereco endereco = new Endereco();
pessoa.setNomePessoa("Pedro Paulo");
endereco.setNomeRua("Massaharu Tanigushi");
pessoa.setEndereco(endereco);
endereco.setPessoa(pessoa);
manager.getTransaction().begin();
pessoa = manager.persist(pessoa);
endereco.setPessoa(pessoa);
manager.persist(endereco);
manager.getTransaction().commit();
manager.close();
System.out.println("Gravado com sucesso");
}
}
Gostei + 0
20/05/2015
Paulo Henrique
Então ele nem deixa pessoa receber manager.persist(pessoa), dá erro logo de cara, tipos incompatíveis.
Gostei + 0
20/05/2015
Paulo Henrique
Eu estava confundindo as coisas se eu quisesse colocar uma chave estrangeira nas duas tabelas eu teria que remover o mappedBy mas não era esse o caso. Valeu pela ajuda.
Gostei + 0
21/05/2015
Ronaldo Lanhellas
Gostei + 0
21/05/2015
Ronaldo Lanhellas
Gostei + 0
21/05/2015
Ronaldo Lanhellas
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)