java - Hibernate 找不到查询参数,即使它在那里
问题描述
我有一个简单的休眠查询:
public AtMessage getMessageById(int messageId)
{
AtMessage message = (AtMessage) session.createQuery(
"FROM com.persistence.AtMessage where atMessageKey=:atMessageKey"
).setParameter("atMessageKey", messageId).uniqueResult();
return message;
}
当我调用该方法时,我会收到一条org.hibernate.QueryParameterException
消息could not locate named parameter [atMessageKey]
我不明白为什么会发生这种情况,因为查询看起来正确。
解决方案
我找到了解决方法。我在 Maven 中使用 shade 插件将所有 jar 打包到一个 Uber JAR 中。
不使用 shade 插件,只在类路径上添加所有 JAR 就可以解决问题。
不确定 Hibernate 以这种特殊方式失败的确切原因是什么,但我现在有一个解决方法。需要明确的是,找到配置文件并没有失败 - 如果我输入了错误的数据库用户/密码,它将失败并出现连接错误。所以它正在寻找配置,类映射似乎很不稳定。
推荐阅读
- python - 如何加快 YOLO v3-v4 推理速度?
- javascript - 在函数外部声明的全局变量不起作用
- javascript - 同源是否禁止域加载的第三方脚本向该域发送请求?
- mysql - 使用另一个数据库中的表 SQL 更新表
- r - 按组在 r 中使用 SMA 或 EMA 预测未来季度
- wordpress - 自定义帖子类型正在破坏页面层次结构
- c# - 使用 LIKE 将 Oracle 查询转换为 SQL Server 查询
- python - 部署后 Heroku 错误(没有名为 '_tkinter' 的模块)
- angular - 如何在我的模板中访问范围选择器的“isComplete()”方法?
- mysql - 选择每年的平均价格