La documentazione di ibernazione dice:
- Nessun join, implicito o esplicito, può essere specificato in una query HQL in blocco. Le sottoquery possono essere utilizzate nella clausola where, in cui le sottoquery stesse possono contenere join.
Quindi, devi sostituire il join implicito con la sottoquery equivalente:
getHibernateTemplate().bulkUpdate(
"update Address address set address.preferred = 1 " +
"where address.user in (select u from User u where u.language = ?)",
"en");