La documentation Hibernate indique :
- Aucune jointure, implicite ou explicite, ne peut être spécifiée dans une requête HQL groupée. Les sous-requêtes peuvent être utilisées dans la clause where, où les sous-requêtes elles-mêmes peuvent contenir des jointures.
Vous devez donc remplacer la jointure implicite par la sous-requête équivalente :
getHibernateTemplate().bulkUpdate(
"update Address address set address.preferred = 1 " +
"where address.user in (select u from User u where u.language = ?)",
"en");