Hibernate - FK nula
17/03/2012
0
Estou com um pequeno problema ao criar uma FK, no banco ela esta com valor null. Alguma dica? Segue os códigos:
@Entity
public class Pessoa implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name=id_pessoa)
private Integer id;
private String nome;
private String endereco;
private String cpf;
@OneToMany(mappedBy=pessoa, fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection <Carro> carros;
public int getId() {
return id;
}
private void setId(int id) {
this.id = id;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Collection<Carro> getCarros() {
return carros;
}
public void setCarros(Collection<Carro> carros) {
this.carros = carros;
}
@Override
public String toString() {
return nome+endereco+cpf+carros;
}
}
@Entity
public class Carro implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer id;
private String modelo;
private String cor;
private String placa;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name=id_pessoa,insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Pessoa pessoa;
public String getCor() {
return cor;
}
public void setCor(String cor) {
this.cor = cor;
}
public int getId() {
return id;
}
private void setId(int id) {
this.id = id;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public String getPlaca() {
return placa;
}
public void setPlaca(String placa) {
this.placa = placa;
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
@Override
public String toString() {
return modelo+cor+placa;
}
}
Lucas Costa
Posts
19/03/2012
Robson Teixeira
O fato da FK existente na tabela carro deve ser por causa de que na instancia do carro o atributo que representa a pessoa dona do mesmo está null.
verifique isso e qualquer coisa só chamar.
espero ter ajudado.
att
robson
19/03/2012
Davi Costa
att Davi
19/03/2012
Lucas Costa
SessionFactory fabrica = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = fabrica.openSession();
Pessoa pessoa = new Pessoa();
pessoa.setNome(Lucas );
pessoa.setCpf(015.049.987-76);
pessoa.setEndereco(Av dois mil e doze);
Carro carro = new Carro();
carro.setModelo(palio );
carro.setCor(azul);
carro.setPlaca(llc 2712);
pessoa.setCarros(new HashSet<Carro>());
pessoa.getCarros().add(carro);
session.beginTransaction();
session.save(pessoa);
pessoa = (Pessoa) session.get(Pessoa.class, 1);
System.out.println(pessoa);
session.getTransaction().commit();
session.close();
SAIDA:
Hibernate: values identity_val_local()
Hibernate: insert into Carro (id, cor, modelo, id_pessoa, placa) values (default, ?, ?, ?, ?)
Hibernate: values identity_val_local()
Hibernate: select pessoa0_.id_pessoa as id1_1_0_, pessoa0_.cpf as cpf1_0_, pessoa0_.endereco as endereco1_0_, pessoa0_.nome as nome1_0_ from Pessoa pessoa0_ where pessoa0_.id_pessoa=?
Hibernate: select carros0_.id_pessoa as id5_1_, carros0_.id as id1_, carros0_.id as id0_0_, carros0_.cor as cor0_0_, carros0_.modelo as modelo0_0_, carros0_.id_pessoa as id5_0_0_, carros0_.placa as placa0_0_ from Carro carros0_ where carros0_.id_pessoa=?
andreAv dois mil e doze015.049.987-76[]
OU SEJA, O HIBERNATE NAO ESTA RETORNANDO O CARRO DA PESSOA COM ID 1 E NO BANCO A TABELA id_pessoa ESTA NULL
19/03/2012
Robson Teixeira
Carro carro = new Carro();
carro.setModelo(palio );
carro.setCor(azul);
carro.setPlaca(llc 2712);
carro.setPessoa(pessoa);
att
robson
19/03/2012
Robson Teixeira
carro.setPessoa(pessoa);
20/03/2012
Lucas Costa
ATT
LUCAS
21/03/2012
Davi Costa
Assim que possível favor fechar o chamado.
att Davi
21/03/2012
Lucas Costa
Alguma outra forma?
att
Lucas
Clique aqui para fazer login e interagir na Comunidade :)