Mapeamento com hibernate

Pessoal preciso de ajuda!

Como faço pra mapear uma tabela associativa que também tem chave primária e se relaciona com outra que tem 2 chaves primárias!!

tipo assim:

tabela 1
colunaA (PK)
colunaB

tabela 2
colunaD (PK)
coludaE (PK)
colunaF

agora a tabela que vai associar tudo…
tabela 3
colunaG (PK)
colunaA (FK)
colunaD (FK)
colunaE (FK)
colunaH

TENHO QUE MAPEAR ISSO COM O HIBERNATE ANNOTATIONS. É POSSÍVEL?
Já pesquisei, procurei e não encontrei nada pra me auxiliar. Se na tabela2 eu tivesse apenas 1 PK tava fácil, mas eu tenho 2 PK, e preciso relacionar as 2 na tabela 3.
Não tem como mudar o BD, me foi passado assim…
Alguém pode me ajudar?

Também pesquisei sobre isto e a única solução encontrado foi criar uma classe só com os campos da chave composta.

public class Tabela2Pk {

  private int colunaD;
  private int colunaE;

  //getter's e setter's
}

public class Tabela2 {
  @EmbeddedId
  private Tabela2Pk tabela2pk;
  
  //outros atributos
  //getter's e setter's
}

Alguma coisa assim…
[]'s