Pessoal, estou utilizando JPA em um projeto daqui, quando tenho uma classe (Turma por exemplo) que faz um relacionamento com uma outra tabela de ‘n para n’, ou seja, tenho uma associação de chave composto dupla então costumo fazer o seguinte no meu POJO de Turma:
@ManyToMany(cascade={CascadeType.ALL}, fetch=FetchType.LAZY)
@JoinTable(name="RL_MATERIAL_TURMA", joinColumns = {
@JoinColumn(name="co_seq_turma", unique=false, nullable=false, insertable=true, updatable=false) }, inverseJoinColumns = {
@JoinColumn(name="co_seq_material", unique=false, nullable=false, insertable=true, updatable=false) })
public Set<Material> getMateriais() {
return this.materiais;
}
Desta forma, no meu POJO de Turma eu consiguo buscar todos os MATERIAIS associados a ela.
Isto funciona perfeitamente, no entanto, minha necessidade agora está em fazer um relacionamento de turma com uma outra tabela associativa que já possui uma chave composta dupla, gerando portanto uma chave composta com tres chaves primarias (todas elas foreing key), ou seja, de um lado eu tenho minha tabela de Turma com sua chave primaria, de outro lado eu tenho um tabela associativa que reune as chaves de Disciplina e Professor (atraves desta tabela eu consiguo saber para quais disciplinas o professor leciona), e dai eu preciso de ter uma Tabela de relacionamento composta por tres chaves primarias, pois eu preciso saber em uma data turma quais professores dão aula, mas para qual disciplina, entenderam?
Resumindo, preciso em Turma referenciar via JPA uma tabela associativa cuja chave composta possui tres campos, como faço isso?