我有2个表ABC和XYZ,而deviceId(ABC中的PK)用作外键。 我怎么能以某种方式使用spring数据JPA repo方法 - updateDeviceType(在ABC表中),如果我想进行如下所示的更新查询,
@Modifying
@Query(name = "updateDeviceType", value = "UPDATE ABC abc,XYZ xyz SET abc.deviceType = ?1 WHERE abc.deviceId = xyz.deviceId.deviceId AND xyz.deviceId.deviceId= ?2")
错误就像 引起:org.hibernate.hql.internal.ast.QuerySyntaxException:期待“set”,在第1行第45列附近找到','
答案 0 :(得分:0)
您的JPQL update query似乎不正确。由于你没有发布你的ABC和XYZ课程,我只能告诉你要找到类似于以下内容的东西:
UPDATE ABC abc
SET abc.deviceType = ?1
WHERE
EXISTS (
SELECT 1
FROM XYZ xyz
WHERE
abc.deviceId = xyz.deviceId.deviceId
AND xyz.deviceId.deviceId= ?2
)
这是一个相当复杂的查询,我建议从中创建一个命名查询,而不是在@Query
注释中保存它。
旁注:您还应该记住,如果您只打算部署到单一类型的数据库并且它提供更好的UPDATE语法,则可以选择在JPA和Spring Data JPA中使用本机查询。