hibernate无法找到查询参数,即使它在那里

piv4azn7  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(249)

我有一个简单的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] 我不明白为什么会这样,因为这个问题看起来是对的。

nr9pn0ug

nr9pn0ug1#

我找到了解决办法。我使用maven中的shade插件将所有jar打包到一个uber jar中。
不使用shade插件,只需在类路径上添加所有jar,问题就消失了。
不知道hibernate以这种奇怪的方式失败的确切原因是什么,但我现在有了一个解决方法。要清楚的是,并不是找不到配置文件-如果我把错误的db user/pass放进去,它将失败并出现连接错误。因此,它正在寻找配置,类Map似乎是不可靠的。

相关问题