【发布时间】:2011-01-03 11:08:49
【问题描述】:
我有一个使用 hibernate uniqueResult 方法的登录控制器。当我在 Eclipse 的 tomcat 服务器中测试它时,一切正常。但是当我将我的 webapps 部署到 tomcat 服务器(在同一台机器上)时,它失败了:即使我使用正确的凭据,它也总是返回 null。
这是我的休眠代码:
session.createCriteria(User.class)
.add(Restrictions.eq(User.USERNAME_FIELD, userName))
.add(Restrictions.eq(User.PASSWORD_FIELD, password)).uniqueResult();
谢谢!
【问题讨论】:
-
一切看起来都很好,我猜用户不存在。
-
uniqueResult()不是“默默地失败”。 Hibernate API 明确表示如果查询没有返回结果,uniqueResult()将返回 null (docs.jboss.org/hibernate/stable/core/api/org/hibernate/…) -
作为旁注。你不应该至少散列密码吗?
-
正如@skaffman 所提到的,uniqueResult() API javadoc 方法确实声明如果没有找到结果将返回 null。这是当前 (4.3) API 文档页面的链接:docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/…