如何在HQL中使用内部联接进行更新

时间:2018-07-14 18:28:18

标签: java sql hibernate hql

如何在HQL中使用内部联接进行更新?

我在SQL中的查询是这样的

  

更新u
  设置u.name = t.name
  来自用户u
  t.id = u.id上的内部联接温度t

我尝试使用HQL

  

@Query(“
  更新用户u
  设置u.name = ..?..
  u.id所在的位置(从Temp中选择ID)
  “)

如何在Temp中获取名称以在此查询中进行设置?
谢谢。

2 个答案:

答案 0 :(得分:0)

HQL与Hive QL中一样?不,休眠QL。

Hibernate提供一个createSQLQuery方法,可让您直接调用本机SQL语句。基于ORACLE SQL的本机SQL查询方法:

update u
   set u.name = (select t.name  
                   from t
                  where t.id = u.id)
 where exists (select 'X' 
                 from t 
                where t.id = u.id)

,然后按照这些对象准则将Hibernate内容应用于参数和绑定变量。不确定要加入INNER JOIN是可行的方法,但Hibernate在某些方法上可能有所不同。

答案 1 :(得分:0)

JPQL syntax不支持15关键字。

但是,如果您在JOINUser之间存在实体关系,则可以尝试如下操作:

Temp