J'ai eu le même problème. Il semble que l'accès à la carte par référence (sans VALUE()) vous donne déjà une valeur d'entrée de carte, c'est-à-dire que le prochain JPQL devrait être transformé en un SQL valide :
select r from Relation r join r.langMap m where ( KEY(m) = :locale and m = :value )