Boa tarde a todos.
Estou com a seguinte dúvida:
1 - Como mapear entidades OneToMany, por exemplo.
Entidade Estado e Cidade:
1.1 - Conforme as regras de modelagem um ESTADO possui várias CIDADES.
CIDADES possui um ESTADO.
Cardinalidade : N ao lado de CIDADES e 1 ao lado de ESTADOS. Ou seja teria uma chave estrangeira de ESTADO em CIDADE.
Classe ESTADOS
@Entity
@Table(name = "Estados")
public class Estado {
@Id
@Column(name = "IdEstado")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "SIGLA")
private String sigla;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "estado")
private Set<Cidade> listaCidades;
public Set<Cidade> getListaCidades() {
return listaCidades;
}
public void setListaCidades(Set<Cidade> listaCidades) {
this.listaCidades = listaCidades;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSigla() {
return sigla;
}
public void setSigla(String sigla) {
this.sigla = sigla;
}
}
----------------------------------------------------------
Classe CIDADE
@Entity
@Table(name = "Cidades")
public class Cidade {
@Id
@Column(name = "IdCidade")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "NOME")
private String descricao;
@ManyToOne
@JoinColumn(name = "IdEstado")
private Estado estado;
public Estado getEstado() {
return estado;
}
public void setEstado(Estado estado) {
this.estado = estado;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
}
-
Sempre que eu tenho um relacionamento OneToMany, no caso terei várias cidades em um estado, quando tenho várias cidades em um estado
terei que usar um Collection para representar várias cidades? -
Na classe Cidades tenho que ter esse tipo de anotação também:
@ManyToOne
@JoinColumn(name = "IdEstado")
private Estado estado;