JPA java.lang.IllegalArgumentException:具有该名称[xxx]的参数不存在

时间:2016-06-03 15:02:15

标签: java hibernate jpa

使用JPA执行NamedNativeQuery时,我收到以下错误消息,

java.lang.IllegalArgumentException: Parameter with that name [pymtRefNP] did not exist
at org.hibernate.jpa.spi.BaseQueryImpl.findParameterRegistration(BaseQueryImpl.java:486)
at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:603)
at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:163)
at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:32).....

查询:

@NamedNativeQuery(name = "update", query = "UPDATE TX_XX_XXX SET CHQ_NO = :chqNoNP , STATUS_CODE = :statusCodeNP  WHERE PYMT_REF = :pymtRefNP AND CUST_ID = :custIdNP  AND COUNTRY_CODE = :countryCodeNP  AND CITY_CODE = :cityCodeNP")

参数值:

    paramValues.put("pymtRefNP", bean.getPymtRef());
    paramValues.put("chqNoNP", bean.getChqNo());
    paramValues.put("statusCodeNP", 65);
    paramValues.put("custIdNP", bean.getCustId());
    paramValues.put("countryCodeNP", bean.getCountryCode());
    paramValues.put("cityCodeNP", bean.getCityCode());

我在最近两天用谷歌搜索了这个问题,但我没有得到任何明确的看法。 注意:我在sql编辑器中验证了这个查询,它运行得很好。 所以,任何人都会帮助我。

先谢谢。

1 个答案:

答案 0 :(得分:0)

我也有这个问题。 要找出真正的问题,我将查询更改为不使用参数:

 "UPDATE TX_XX_XXX SET CHQ_NO = " + variable + " WHERE PYMT_REF = " + 
     key + "";

在此之后,收到一条新消息,通知模型未映射

修复模型包每件事都可以。