Apesar de não serem muito comuns há situações onde é necessário utilizar relações many-to-many. Se a nível da BD existe uma tabela intermédia que promove a relação entre outras duas tabelas, a nível de objectos (classes), apenas vão existir 2 em que cada um delas tem uma lista da outra.
Imaginando que temos uma tabela de federateds e uma tabela de scores, em que um federated tem vários scores mas que um score também pode pertencer a vários federateds quando estes formam uma equipa num determinado evento.
Como se pode ver a nível de BD a tabela federated_score promove a relação entre as duas tabelas que realmente interessam a federated e a scores. Agora a nível de código como fica implementando em JPA:
@Entity
@Table(name = "scores")
public class Score {
[...]
@ManyToMany
@JoinTable(name="federated_score",
joinColumns=@JoinColumn(name="score_id", referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="federation_code",
referencedColumnName="federation_code")
)
private Collection<Federated> federateds;
[...]
}
@Entity
@Table(name = "federateds")
public class Federated {
[...]
@ManyToMany
@JoinTable(name="federated_score",
joinColumns=@JoinColumn(name="federation_code", referencedColumnName="federation_code"),
inverseJoinColumns=@JoinColumn(name="score_id", referencedColumnName="id")
)
private Collection<Score> scores;
[...]
}

Sem comentários:
Enviar um comentário