na sua Tabela Testemunha, existe mais algum campo alem das chaves?
se não tiver, ela eh simplesmente uma tabela associativa, então o mapeamento ficaria mais ou menos assim:
@Entity
public class Funcionario implements Serializable {
@Id
public Integer drtFuncionario;
@ManyToMany(
targetEntity=pacote.Ocorrencia.class,
cascade={CascadeType.PERSIST, CascadeType.MERGE}
)
@JoinTable(
name="Testemunha",
joinColumns={@JoinColumn(name="drtFuncionario")},
inverseJoinColumns={@JoinColumn(name="idOcorrencia")}
)
public Collection getOcorrencias() {
return ocorrencias;
}
...
}
@Entity
public class Ocorrencia implements Serializable {
@Id
public Integer idOcorrencia;
@ManyToMany(
cascade={CascadeType.PERSIST, CascadeType.MERGE},
mappedBy="Testemunha"
targetEntity=Funcionario.class
)
public Collection getFuncionarios() {
return funcionarios;
}
}
agora, se na tabela Testemunha vc tiver outras informações…vc tem q criar o seu POJO para Testemunha, e mapea-lo junto com Funcionario e Ocorrencia como 2 mapeamentos many-to-one, porém com uma composite PK, mais ou menos assim:
@Entity
public class Testemunha implements Serializable {
@Id
public Integer drtFuncionario;
public Integer idOcorrencia;
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE}, targetEntity=Funcionario.class )
@JoinColumn(name="drtFuncionario")
public Funcionario getFuncionario() {
return funcionario;
}
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE}, targetEntity=Ocorrencia.class )
@JoinColumn(name="idOcorrencia")
public Ocorrencia getOcorrencia() {
return ocorrencia;
}
}
aih vc tem q mapear Funcionario e Ocorrencia com um mapeamento one-to-many em cada, “apontando” pra Testemunha…
espero ter ajudado…
flw