2016-12-15 71 views
1

我试图做一个NamedQuery这里是一个更新是我的查询JPQL - NamedQuery更新与SET命名参数

@NamedQuery(name="User.updateUserCompany", query="UPDATE User u SET u.company = :company WHERE u.userId = :userId") 

而且我错误编译错误说

Input parameters can only be used in the WHERE clause or HAVING clause of a query. 

如何我可以设置我想要更新的内容吗?

由于

+0

由于消息告诉您,使用JPA规范不能在语句的UPDATE子句中使用参数。一些JPA提供者允许在那里使用参数(例如DataNucleus JPA,因为我这样做),但显然你的JPA提供者不......哪个JPA提供者? –

回答

2

According to JPA 2.1 (JSR 338) specifications

4.6.4输入参数:

“输入参数只能中可以使用的WHERE子句或查询的或作为用于更新项的新值HAVING子句在更新语句的SET子句中。“

您正在使用哪个实现/提供程序?

+0

因此,它将独立于提供者[**或作为更新语句**的SET子句中的更新项目的新值]工作。我认为他使用了较旧的JPA版本。哪一个? – badera

+0

**或作为更新语句**的SET子句中的更新项的新值适用自JPA 2.1以来。 – fg78nc