我有一个简单的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]
我不明白为什么会这样,因为这个问题看起来是对的。
1条答案
按热度按时间nr9pn0ug1#
我找到了解决办法。我使用maven中的shade插件将所有jar打包到一个uber jar中。
不使用shade插件,只需在类路径上添加所有jar,问题就消失了。
不知道hibernate以这种奇怪的方式失败的确切原因是什么,但我现在有了一个解决方法。要清楚的是,并不是找不到配置文件-如果我把错误的db user/pass放进去,它将失败并出现连接错误。因此,它正在寻找配置,类Map似乎是不可靠的。