HQL查询 HQL Named parameter [xxx] not set 的解决办法
org.springframework.dao.InvalidDataAccessResourceUsageException: Named parameter [xxx] not set;
nested exception is org.hibernate.QueryException: Named parameter [xxx] not set
翻译过来就是参数未定义/命名,
1.检查HQL查询语句参数传递方式是否正确,包括createQuery().setParameter的时候,参数名要用双引号包起来
2.如果是分页查询+条件查询的话,两个查询都要setParameter,
* 拼字符串的方式传递参数查看语句是否拼接正确
* 占位符?来传递参数(索引从0开始,传递的值不用单引号/Hibernate自动加了)
* :参数名来传递参数,setParameter的时候参数名要用双引号包起来
* 如果传递多个参数,可以采用setParamterList方法
3.不要拿HQL当SQL来写,正常HQL的语句是 "form 映射表的类名 where 映射字段的属性名 = :要传递的属性名"
4.大小写问题,要和映射表的类名保持一致,要不然连表也找不到,报Table is not exist
还没有解决的话看看扫描路径是否正确
当传输的值有空时也会报could not locate named parameter(无法定位命名参数)
找不到实体,在hibernate配置加上packagesToScan的property
有时候数据库里的字段类型和传递参数类型不匹配也会报错,这个仔细看控制台信息就能看到,改成相应的数据类型即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话