use*_*654 5 java oracle spring hibernate
Oracle 10g,Hibernate 3.4
此更新(基于long user.userId值)正确完成:
getHibernateTemplate().bulkUpdate("update Address address set address.preferred = 1 where address.user.userId = ?", 1l);
Run Code Online (Sandbox Code Playgroud)
这个(基于String user.language值)抛出一个异常ORA-00971: missing SET keyword:
getHibernateTemplate().bulkUpdate("update Address address set address.preferred = 1 where address.user.language = ?", "en");
Run Code Online (Sandbox Code Playgroud)
谁知道为什么?
- 在批量HQL查询中不能指定隐式或显式的连接.子查询可以在where子句中使用,子子查询本身可以包含连接.
因此,您需要使用等效的子查询替换隐式连接:
getHibernateTemplate().bulkUpdate(
"update Address address set address.preferred = 1 " +
"where address.user in (select u from User u where u.language = ?)",
"en");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6838 次 |
| 最近记录: |