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