mysql - 我尝试使用 JPA 查询中的内部联接更新一些记录,但出现一些异常

标签 mysql spring jpa

这是 MySQL 查询:

UPDATE grademyadvisor.gma_error AS ge
        INNER JOIN
    grademyadvisor.yodlee_error_code AS yec ON yec.id = ge.yodlee_error_id 
SET 
    ge.is_resolved = 0
WHERE
    ge.client_id = 639
        AND yec.error_code = 402;

Spring Data JPA Query And getting Exception. Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: expecting "set", found 'INNER' near line 1, column 39 [ UPDATE com.gma.domain.GMAError AS ge INNER JOIN ge.yodleeErrorCode AS yec SET ge.isResolved=:isResolved WHERE ge.client.id=:clientId AND yec.errorCode=:errorCode ]

@Query(" UPDATE GMAError AS ge "
        + "INNER JOIN ge.yodleeErrorCode AS yec "
        + "SET ge.isResolved=:isResolved "
        + "WHERE ge.client.id=:clientId "
        + "AND yec.errorCode=:errorCode ")

最佳答案

在 WHERE 子句中使用子查询来消除 INNER JOIN 语句:

UPDATE grademyadvisor.gma_error
SET 
    is_resolved = 0
WHERE
    client_id = 639
AND yodlee_error_id = (SELECT id FROM grademyadvisor.yodlee_error_code WHERE error_code = 402);

关于mysql - 我尝试使用 JPA 查询中的内部联接更新一些记录,但出现一些异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34809436/

相关文章:

python - Flask-SqlAlchemy 或 SqlAlchemy 过滤器

java - 读取本地的java spring属性

java - hibernate 5 : createNativeQuery() in Singleton pattern

mysql - 在 SQL 中查找距离输入日期最近的日期,两种方式

mysql - 使用if语句更新sql表

mysql - 如何返回包括空外键值的所有连接表

java - 在 Spring Framework 3.0 中同时使用 Hibernate 和 Jdbc

java - Spring Boot Second DataSource 导致 Could not autowire 字段

java - 带有可视化图表的 JPA 数据库建模器

java - 一对一和连接表