使用Join进行Coldfusion ORM更新

时间:2016-03-20 10:15:04

标签: mysql orm coldfusion hql

我正在寻找HQL语句的帮助,我想用JOIN进行更新。我尝试了以下语句,它在MySQL-Workbench中运行良好:

UPDATE table1 t1 
SET    t1.status='Running' 
JOIN   t1.table2 t2  
WHERE  t1.status='Open' AND t2.destination ='mydestination' "

但它给出了错误:

  

期待"设置",找到'加入'靠近第1行第16栏

1 个答案:

答案 0 :(得分:2)

在我看来,由于这是批量更新操作,因此您应该使用SQL而不是HQL。 ORM并非真正设计用于此类更新。您始终可以运行SQL语句,然后如果需要,可以在之后加载对象图(您的ORM实体)。

对于SQL,您需要使用cfquery(或等效的cfscript)运行它,在您的HQL示例中,它看起来像SQL一样(假设您提到MySQL) MySQL Workbench)

<cfquery>
    UPDATE table1 t1 
    INNER JOIN table2 t2 ON t1.col = t2.col
    SET status='Running' 
    WHERE status='Open' 
        AND t2.destination='mydestination'
</cfquery>

如果您想使用HQL,那么您通常需要使用子查询。像这样:

update table1 t1 
set t1.status = 'Running' 
where t1.state = 'Open' 
and t1 in (
    select t2.table1
    from table2 t2
    where t2.destination='mydestination'
)