JPA Relacionamentos OneToMay, ManyToOne

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;

Esse post aqui descreve muita coisa sobre isso.

Vai te ajudar pacas: @OneToMany e @ManyToOne Unidirecional e Bidirecional .

Olá!!

Segue, em anexo, um exemplo que encontrei em uma apostila muito boa da IBM…

Abç,
Tania


olá,
você pode encontrar isso e mais outras coisas básicas relacionadas a JPA neste vídeo:


Passei o link direto para a explicação do código, mas antes disso tem algumas outras explicações básicas.

Espero ter ajudado :slight_smile: