我正在寻找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栏
答案 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'
)