Hibernate + Annotations + Mapeamentos

0 respostas
V

Saudações!
Bem, estou tendo problemas com mapeamentos bidirecionais utilizando o annotations… segue o exemplo de aplicação:

Classe pessoa

@Entity

@Table(name = pessoa)

public class Pessoa implements Serializable

{

private static final long serialVersionUID = -2386914084212703146L;

private int codigo;

private String nome;

private List<Telefone> telefones = new LinkedList<Telefone>();

@OneToMany(cascade = { CascadeType.ALL })

@JoinColumn(name = cd_pessoa)

public List<Telefone> getTelefones()

{

return telefones;

}

public void setTelefones(List<Telefone> telefones)

{

this.telefones = telefones;

}

@SequenceGenerator(name = SEQ_PESSOA, sequenceName = seq_pessoa)

@Id

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = SEQ_PESSOA)

@Column(name = CD_PESSOA)

public int getCodigo()

{

return codigo;

}

public void setCodigo(int codigo)

{

this.codigo = codigo;

}
@Column(name = "NM_PESSOA")
public String getNome()
{
    return nome;
}
public void setNome(String nome)
{
    this.nome = nome;
}

}

Classe Telefone

@Entity

@Table(name = telefone)

public class Telefone implements Serializable

{

private Pessoa pessoa;

private static final long serialVersionUID = 3258517279673966937L;

private int codigo;

private String telefone;

@Id

@SequenceGenerator(name = SEQ_TELEFONE, sequenceName = seq_telefone)

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = SEQ_TELEFONE)

@Column(name = CD_TELEFONE)

public int getCodigo()

{

return codigo;

}

public void setCodigo(int codigo)

{

this.codigo = codigo;

}

@Column(name = NU_TELEFONE)

public String getTelefone()

{

return telefone;

}

public void setTelefone(String telefone)

{

this.telefone = telefone;

}

@ManyToOne

@JoinColumn(name = cd_pessoa)

public Pessoa getPessoa()

{

return pessoa;

}

public void setPessoa(Pessoa pessoa)

{

this.pessoa = pessoa;

}

}

Problema:

A tabela telefone possui um código de pessoa. Entretanto, com o mapeamento @OneToMany da classe pessoa, não consigo ao salvar o objeto pessoa passar esse código para a tabela telefone…

Tentei um mapeamento @JoinTable na classe pessoa, da seguinte maneira:
@OneToMany
@JoinTable(name = “telefone”,
joinColumns = @JoinColumn(name = “cd_pessoa”),
inverseJoinColumns = @JoinColumn(name = “cd_telefone”))

Mas mesmo assim, para cadastrar um telefone eu preciso fazer o seguinte:

Pessoa pessoa = new Pessoa();

pessoa.setNome(Novo);

pessoa.setEmail(<a>"[email removido]</a>");

pessoa.setSobre(novo sobre);

Telefone tel = new Telefone();

tel.setTelefone(222-0222);

pessoa.getTelefones().add(tel);

tel.setPessoa(pessoa); <<<< Nao deveria ser necessário

sessao.beginTransaction();

sessao.saveOrUpdate(pessoa);

sessao.getTransaction().commit();

Alguém pode ajudar???

Criado 26 de julho de 2006
Respostas 0
Participantes 1