2016-12-15 69 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