Boa tarde a todos, comecei a estudar hibernate agora e estou encontrando algumas conplicações , gostaria de saber como resolver esse problema
Tenho duas classes Entity
[size=18]Classe Pessoas[/size]@Entity
@Table(name="pessoas")
public class Pessoa implements Serializable
{
@Id
private int id_pessoa;
@Column(name="nome_pessoa", length=40)
private String nome_pessoa;
@OneToMany(cascade= javax.persistence.CascadeType.ALL, mappedBy = "pessoa")
@Cascade(CascadeType.ALL)
private Collection<Endereco> endereco;
@Entity
@Table(name="endereco")
public class Endereco implements Serializable {
@Id
private int id_endereco;
@Column(name="desc_endereco", length=50)
private String desc_endereco;
@ManyToOne
@Cascade(CascadeType.ALL)
private Pessoa pessoa;
Quando eu vou gravar com a classe para gravação:
[size=18]Classe Grava [/size]
public class GravaPessoaEndereco
{
public static void main(String[] args)
{
try{
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.addAnnotatedClass(Pessoa.class);
cfg.addAnnotatedClass(Endereco.class);
SessionFactory fabrica = cfg.buildSessionFactory();
Session sessao = fabrica.openSession();
Transaction tx_pessoa = sessao.beginTransaction();
Pessoa obj_pessoa = new Pessoa();
obj_pessoa.setNome_pessoa("Diogo22");
obj_pessoa.setId_pessoa(1);
Endereco obj_endereco = new Endereco();
obj_endereco.setId_endereco(1);
obj_endereco.setDesc_endereco("Rua 1");
obj_endereco.setPessoa(obj_pessoa);
Endereco obj_endereco2 = new Endereco();
obj_endereco.setId_endereco(2);
obj_endereco.setDesc_endereco("Rua 2");
obj_endereco.setPessoa(obj_pessoa);
obj_pessoa.setEndereco(new HashSet<Endereco>());
obj_pessoa.getEndereco().add(obj_endereco);
obj_pessoa.getEndereco().add(obj_endereco2);
sessao.save(obj_pessoa);
tx_pessoa.commit();
sessao.close();
}catch(Exception erro){
JOptionPane.showMessageDialog(null, "Erro na inserção: " + erro);
System.out.println("Er: "+ erro);
}
}
}
O endereço é gravado assim no banco
[img]http://img189.imageshack.us/img189/5535/bdendere.jpg[/img]
Ja o cliente é gravado corretamente
[img]http://img51.imageshack.us/img51/4882/bepess.jpg[/img]
Minhas duvidas são:
Porque não esta gravando corretamente?
É necessario ter Many to one e One to many para fazer essa relação de tabela onde uma pessoa pode ter varios endereços?
Existe um meio melhor para fazer isso?
Muito obrigado a todos