Question de base: quel est l"équivalent en annotation hibernate/JPA de <map-key formula="..."/>? Je dois convertir le mapping suivant en annotations

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
      <map name="privateManagers" table="RH_EMP_FCT_GROUP_LINK" cascade="lock,merge">
          <key column="EMP_ID"/>
          <map-key formula="(select grp.FCT_GROUP_KEY from RH_EMP_FCT_GROUP grp where grp.FCT_GROUP_ID=FCT_GROUP_ID)" type="string"/>
          <many-to-many column="FCT_ID" class="be.rmi.intranet.db.users.Function" />
      </map>
J'ai essayé ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
    @ManyToMany(fetch=FetchType.LAZY)
    @Formula(value="(select grp.FCT_GROUP_KEY from RH_EMP_FCT_GROUP grp where grp.FCT_GROUP_ID=FCT_GROUP_ID)")
    @JoinTable(name = "RH_EMP_FCT_GROUP_LINK", joinColumns = {@JoinColumn(name = "EMP_ID")}, inverseJoinColumns={@JoinColumn(name="FCT_ID") })
    protected Map<String, Function> getPrivateManagers() {
Ca fonctionne bien à l'exception de la clé. Le @Formula est ignoré et hibernate me crée la table suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
112  [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaExport  - create table RH_EMP_FCT_GROUP_LINK (LINK_ID bigint not null, emp_id bigint not null, fct_id bigint not null, fct_group_id bigint not null, mapkey varchar(255), primary key (EMP_ID, FCT_GROUP_ID))
On peut y constater la présence d'un "mapkey" qui correspond à la clé de ma map, ce qui n'est pas l'effet désiré.

J'ai aussi essayé ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
@MapKey(columns={@Formula(value="(select grp.FCT_GROUP_KEY from RH_EMP_FCT_GROUP grp where grp.FCT_GROUP_ID=FCT_GROUP_ID)")})
Mais d'après mon IDE, @Formula ne peux pas être considéré comme un @Column.

Donc si quelqu'un a une idée, il doit bien y avoir le moyen de faire ça avec des annotation.