JPA语法 - 来自另一个表的UPDATE TABLE

时间:2016-01-06 11:22:50

标签: java jpa jpql

我试图更新另一个表的某些列。

我想使用JPA(JPQL)来创建Query

我尝试了这种语法:

UPDATE 
    Table t1 JOIN Table t2 
    ON t1.x1 = t2.y1 AND t1.x2 = t2.y2 
SET t1.a1 = t2.a2 , 
    t1.b1 = t2.b2; 

但我得到一个关于&#34的错误;表达式无效,这意味着它不遵循JPQL语法"

有没有办法使用JPA(JPQL)语法执行此查询?使用Native Query(MYSQL)它可以正常工作。

1 个答案:

答案 0 :(得分:0)

以下 - 无论多么糟糕和低效 - 都是等效的,可能对JPQL有效:

UPDATE 
    Table t1 
SET t1.a1 = ( SELECT t2.a2
              FROM Table t2 
              WHERE t1.x1 = t2.y1 AND t1.x2 = t2.y2
            ), 
    t1.b1 = ( SELECT t2.b2
              FROM Table t2 
              WHERE t1.x1 = t2.y1 AND t1.x2 = t2.y2
            ) 
WHERE EXISTS
      ( SELECT *
        FROM Table t2 
        WHERE t1.x1 = t2.y1 AND t1.x2 = t2.y2 
      ) ;