복붙노트

[SPRING] 이 최대 절전 모드 템플릿 bulkUpdate가 작동하지 않는 이유

SPRING

이 최대 절전 모드 템플릿 bulkUpdate가 작동하지 않는 이유

Oracle 10g, Hibernate 3.4

이 업데이트 (긴 user.userId 값을 기반으로 함)가 올바르게 수행되었습니다.

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

이 하나 (String user.language 값을 기반으로 함)는 예외를 발생시킵니다. ORA-00971 : SET 키워드 누락 :

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

왜 그런지 압니까?

해결법

  1. ==============================

    1.Hibernate 문서는 말한다 :

    Hibernate 문서는 말한다 :

    따라서 암시 적 조인을 동등한 하위 쿼리로 대체해야합니다.

    getHibernateTemplate().bulkUpdate(
       "update Address address set address.preferred = 1 " +
       "where address.user in (select u from User u where u.language = ?)",
       "en"); 
    
  2. from https://stackoverflow.com/questions/5368522/why-this-hibernate-template-bulkupdate-doesnt-work by cc-by-sa and MIT license