gpt4 book ai didi

java - 从查询 JPA 更新

转载 作者:行者123 更新时间:2023-12-01 11:33:50 24 4
gpt4 key购买 nike

您好,我需要使用以下 JPQL 进行更新。

UPDATE AreaCoberturaSedes a SET a.seleccionado = acs.seleccionado
FROM AreaCoberturaSedes acs JOIN acs.sedesNegociacion sn
WHERE acs.municipio.id = a.municipio.id
AND sn.negociacion.id = :negociacionId AND sn.id = :sedeNegociacionId

native 查询将是

UPDATE contratacion.area_cobertura_sedes a  SET seleccionado = acs.seleccionado
FROM contratacion.area_cobertura_sedes acs INNER JOIN contratacion.sedes_negociacion sn ON sn.id = acs.sede_negociacion_id
WHERE acs.municipio_id = a.municipio_id
AND sn.negociacion_id = 34 AND sn.id = 67

并且工作正常。

但是使用 JPA 会引发以下异常:

ERROR [org.hibernate.hql.internal.ast.ErrorCounter] (default task-47) line 1:123: unexpected token: FROM: line 1:123: unexpected token: FROM
at org.hibernate.hql.internal.antlr.HqlBaseParser.updateStatement(HqlBaseParser.java:261) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:169) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:295) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:203) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:131) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:93) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1800) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:328) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
at org.jboss.as.jpa.container.AbstractEntityManager.createQuery(AbstractEntityManager.java:443) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]

最佳答案

请通过此链接刷新您对 JPQL UPDATE 查询的了解。没有 FROM。

UPDATE [<candidate-class>] SET item1=value1, item2=value2
[WHERE <filter>]

参见this post了解更多信息。

关于java - 从查询 JPA 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30196617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com