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;[/code]
[b][size=18]Classe Endereco[/size][/b]
[code]@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;[/code]
Quando eu vou gravar com a classe para gravação:
[b][size=18]Classe Grava [/size][/b]
[code]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

Ja o cliente é gravado corretamente

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
