Почему этот шаблон спящего режима не работает - PullRequest
5 голосов
/ 20 марта 2011

Oracle 10g, Hibernate 3.4

Это обновление (на основе значения long user.userId) выполнено правильно:

getHibernateTemplate().bulkUpdate("update Address address set address.preferred = 1 where address.user.userId = ?", 1l);

Это (на основе значения String user.language) вызывает исключениеORA-00971: missing SET keyword:

getHibernateTemplate().bulkUpdate("update Address address set address.preferred = 1 where address.user.language = ?", "en");

Кто-нибудь знает почему?

1 Ответ

8 голосов
/ 20 марта 2011

Документация Hibernate говорит:

  • В массовом запросе HQL нельзя указывать ни явные, ни явные объединения.Подзапросы могут использоваться в предложении where, где сами подзапросы могут содержать объединения.

Итак, вам нужно заменить неявное соединение эквивалентным подзапросом:

getHibernateTemplate().bulkUpdate(
   "update Address address set address.preferred = 1 " +
   "where address.user in (select u from User u where u.language = ?)",
   "en"); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...