首页 > 解决方案 > 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]

我不明白为什么会发生这种情况,因为查询看起来正确。

标签: javahibernate

解决方案


我找到了解决方法。我在 Maven 中使用 shade 插件将所有 jar 打包到一个 Uber JAR 中。

不使用 shade 插件,只在类路径上添加所有 JAR 就可以解决问题。

不确定 Hibernate 以这种特殊方式失败的确切原因是什么,但我现在有一个解决方法。需要明确的是,找到配置文件并没有失败 - 如果我输入了错误的数据库用户/密码,它将失败并出现连接错误。所以它正在寻找配置,类映射似乎很不稳定。


推荐阅读