如何使用条件更新 table 中的行是指另一个 table

How to update row in table with condition is refer to another table

如何更新 table 条件是指 spring jpa 中的其他 table? 我有 table 与 TaskProgress 相关的任务(多对一)。 TaskProgress 有一些值,例如:CREATE、INPROGRES、DONE、ARCHIVED,... 这是我在 repostitory 中的查询:

@Modifying
@Query("UPDATE Task t  SET t.responsibleUser = null WHERE t.responsibleUser.id = :userId " +
            "AND t.deleted = false AND t.taskProgress.name <> 'ARCHIVED'")
void removeResponsibleUserId(UUID userId);

但是我得到了错误:

Hibernate: update task cross join  set responsible_user_id=null where responsible_user_id=? and deleted=0 and name<>'ARCHIVED'
2020-11-25 00:38:51 - SQL Error: 1064, SQLState: 42000
2020-11-25 00:38:51 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set responsible_user_id=null where responsible_user_id=x'152B59C33A0035003500000' at line 1

像这样使用存在谓词:

@Modifying
@Query("UPDATE Task t  SET t.responsibleUser = null WHERE t.responsibleUser.id = :userId " +
       "AND t.deleted = false AND NOT EXISTS (SELECT 1 FROM t.taskProgress p WHERE p.name = 'ARCHIVED')")
void removeResponsibleUserId(UUID userId);