Hibernate报错:无法定位命名参数[ ] 技术求助
解决Hibernate的"could not locate named parameter [ ]"错误
嘿,这个问题很好搞定!你遇到的错误根源在于命名参数不匹配,咱们来拆解一下:
问题分析
你在HQL语句里明明定义了命名参数:PARAMS,但调用setParameterList()的时候,却把参数名写成了一个空格" "——Hibernate翻遍你的HQL也找不到叫"空格"的参数,可不就报找不到参数的错误嘛。另外补充一句,你的HQL里两次用到:PARAMS(IN子句和FIELD函数里)是没问题的,Hibernate支持同一个参数的多次引用,只要参数名对应上就行。
修正后的代码
把setParameterList的第一个参数改成和HQL里一致的"PARAMS"就解决了:
String[] params = {"PARAM1","PARAM2"}; Query query = session.createQuery("select paramValue from Table where paramName in (:PARAMS) order by FIELD (paramName, :PARAMS)"); query.setParameterList("PARAMS", params); // 替换掉原来的空格参数名
额外小提醒
- 命名参数不能是空字符串或空格,必须和HQL中
:参数名的名称完全匹配(多数场景下大小写敏感,建议严格保持一致) - 如果要给多个不同的命名参数传值,一定要确保每个参数名在HQL里都有对应的
:参数名定义
内容的提问来源于stack exchange,提问作者user14748001
相关产品推荐
相关产品推荐

