Olá pessoal, gostaria que me ajudassem com o seguinte problema:
Tenho duas classes: Contato e Telefone. Um contato pode ter vários telefones, logo terei um relacionamento 1…n.
Já pesquisei na internet e não obtive muitos exemplos claros, a maioria que encontrei foi com mapeamentos xml.
Fiz assim:
//Entidade ContatoBean****
@Entity
@Table(name="contato")
public class ContatoBean implements java.io.Serializable{
private Integer id;
private String nome;
private Date nascimento;
private Collection<TelefoneBean> telefoneBean;
@Id
@GeneratedValue
@Column(name="id")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="nascimento")
@Temporal(value=TemporalType.DATE)
public Date getNascimento() {
return nascimento;
}
public void setNascimento(Date nascimento) {
this.nascimento = nascimento;
}
@Column(name="nome")
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@OneToMany(mappedBy="contatoBean", fetch=FetchType.EAGER)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
public Collection<TelefoneBean> getTelefoneBean() {
return telefoneBean;
}
public void setTelefoneBean(Collection<TelefoneBean> telefone) {
this.telefoneBean = telefone;
}
}
//Entidade TelefoneBean*********
@Entity
@Table(name="telefone")
public class TelefoneBean implements java.io.Serializable{
private Integer id;
private String numero;
private String codigoArea;
private ContatoBean contatoBean;
@Id
@GeneratedValue
@Column(name="id")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="numero")
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
@Column(name="codigoarea")
public String getCodigoArea() {
return codigoArea;
}
public void setCodigoArea(String codigoArea) {
this.codigoArea = codigoArea;
}
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="conid",insertable=true,updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
public ContatoBean getContatoBean() {
return contatoBean;
}
public void setContatoBean(ContatoBean contatoBean) {
this.contatoBean = contatoBean;
}
}
conid que está em @JoinColumn, no mapeamento de contatoBean na classe TelefoneBean, é o nome da chave estrangeira na tabela telefone referente a chave primária id da tabela contato.
Quando faço um debug, verifico que o contatoBean na classe TelefoneBean sempre está nulo.
Como posso realizar um relacionamento 1…n utilizando hibernate com annotations?