2011-03-20 9 views
5

Oracle 10g, Hibernate 3.4Dlaczego ten szablon hibernacji bulkUpdate nie działa

Ta aktualizacja (w oparciu o long user.userId wartości) odbywa się prawidłowo:

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

To jeden (na podstawie String user.language wartości) Zgłasza wyjątek ORA-00971: missing SET keyword:

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

Ktoś wie dlaczego?

Odpowiedz

8

Hibernate documentation mówi:

  • Nie łączy, zarówno bezpośrednia lub pośrednia, mogą być określone w kwerendzie HQL luzem. Zapytania dodatkowe mogą być używane w klauzuli where, gdzie same podkwerendy mogą zawierać sprzężenia.

Więc trzeba wymienić niejawna przyłączyć równoważnej podzapytaniu:

getHibernateTemplate().bulkUpdate(
    "update Address address set address.preferred = 1 " + 
    "where address.user in (select u from User u where u.language = ?)", 
    "en"); 
+0

Works. Dziękuję dobrze. – user6778654

Powiązane problemy