Ich hatte das gleiche Problem. Es sieht so aus, als ob der Zugriff auf map per ref (ohne VALUE()) bereits einen map-Eintragswert liefert, d. h. die nächste JPQL sollte in ein gültiges SQL umgewandelt werden:
select r from Relation r join r.langMap m where ( KEY(m) = :locale and m = :value )