【问题标题】:Why this hibernate template bulkUpdate doesn't work为什么这个休眠模板 bulkUpdate 不起作用
【发布时间】:2011-07-19 02:51:10
【问题描述】:

Oracle 10g,休眠 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");

有人知道为什么吗?

【问题讨论】:

    标签: java oracle hibernate spring


    【解决方案1】:

    Hibernate documentation 说:

    • 不能在批量 HQL 查询中指定隐式或显式连接。子查询可以在 where 子句中使用,其中子查询本身可能包含连接。

    因此,您需要将隐式连接替换为等效的子查询:

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

    【讨论】:

      猜你喜欢
      • 2011-01-15
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多