1

我有以下 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的查询。提前致谢。

4

1 回答 1

0

要解决You can't specify target table 'TASK_ASSESSMENT' for update in FROM clause,请重写查询以使用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
于 2011-02-28T17:37:30.337 回答