Oracle 10g, Hibernate 3.4
This update (based on long user.userId
value) is done correctly:
getHibernateTemplate().bulkUpdate("update Address address set address.preferred = 1 where address.user.userId = ?", 1l);
This one (based on String user.language
value) throws an exception ORA-00971: missing SET keyword
:
getHibernateTemplate().bulkUpdate("update Address address set address.preferred = 1 where address.user.language = ?", "en");
Anybody knows why?
Hibernate documentation says:
- No joins, either implicit or explicit, can be specified in a bulk HQL query. Sub-queries can be used in the where-clause, where the subqueries themselves may contain joins.
So, you need to replace implicit join with the equivalent subquery:
getHibernateTemplate().bulkUpdate(
"update Address address set address.preferred = 1 " +
"where address.user in (select u from User u where u.language = ?)",
"en");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With