Dokumentacja hibernacji mówi:
- W zbiorczej kwerendzie HQL nie można określić żadnych sprzężeń, ani niejawnych, ani jawnych. Podzapytania mogą być używane w klauzuli where, gdzie same podzapytania mogą zawierać sprzężenia.
Musisz więc zastąpić niejawne sprzężenie równoważnym podzapytaniem:
getHibernateTemplate().bulkUpdate(
"update Address address set address.preferred = 1 " +
"where address.user in (select u from User u where u.language = ?)",
"en");