mysql - hibernate ,mysql

标签 mysql hibernate hql mysql-error-1093

我有以下 hql 查询:

UPDATE TaskAssessment taskAssessment 
SET taskAssessment.activeFlag = false 
WHERE taskAssessment IN 
(
SELECT taskAssessment2 
FROM TaskAssessment taskAssessment2 
Where taskAssessment2.activeFlag = true 
AND taskAssessment2.patient.id 
AND taskAssessment2.needsLevel.careNeed = :careNeed
)

但它给我错误:

You can't specify target table 'TASK_ASSESSMENT' for update in FROM clause

谁能帮我更正对 mysql 和 hibernate 的查询。提前致谢。

最佳答案

要解决 您无法在 FROM 子句中指定目标表 'TASK_ASSESSMENT' 进行更新,重写查询以使用 JOIN 而不是 IN(在 mysql 中你需要这样写):

UPDATE TaskAssessment a
INNER JOIN TaskAssessment a2 ON (a2.id = a.id)
SET a.activeFlag = 0  
WHERE a2.active_flag = 1 AND 
a2.patient_id = :patient_id AND a2.needsLevel_careNeed = :careNeed

关于mysql - hibernate ,mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5145268/

相关文章:

mysql - 将事件日期链接到组中的另一个值

mysql - 将一个表与另一个表的最新行连接起来

mysql - 在 CASE WHEN 语句中进行子选择时,子查询返回多于 1 行

php - 为批量更新提交的一个或多个行缺少指定的索引。 (代码点火器)

java - 与 data-envers 的连接已关闭

java - 过滤延迟初始化的 Hibernate 集合

hibernate - Grails -- 非法尝试取消引用 Hql 中的集合错误

java - Java/Hibernate Criteria Query API 是否可以防止注入(inject)?

hibernate - 使用HQL查询日期而忽略Oracle上的时间

从表中检索记录时,Hibernate异常: org. hibernate.hql.internal.ast.QuerySyntaxException