Java 关于hibernate标准的Noob问题
我有一个名为User的类,它有两个属性:login/password。我正在尝试使用hibernate标准对应用程序中的用户进行身份验证,但我的请求不起作用 [编辑]返回值为空。我的数据库中有两个用户要测试 这是我的密码:Java 关于hibernate标准的Noob问题,java,hibernate,criteria,Java,Hibernate,Criteria,我有一个名为User的类,它有两个属性:login/password。我正在尝试使用hibernate标准对应用程序中的用户进行身份验证,但我的请求不起作用 [编辑]返回值为空。我的数据库中有两个用户要测试 这是我的密码: @Override public User authenticate(String login, String password) throws NullPointerException { Session session = this.getSession(
@Override
public User authenticate(String login, String password)
throws NullPointerException {
Session session = this.getSession();
User user = (User) session
.createCriteria(User.class)
.add(
Restrictions.and(
Property.forName("login").eq(login),
Property.forName("password").eq(password)
)).uniqueResult();
if (user == null){
throw new NullPointerException("User not found");
}
return user;
}
有人能告诉我我的代码有什么问题吗
2011年新年快乐 您应该首先从数据库中检索用户。如果用户不存在,则在登录页面上显示消息。您的所有登录名都应位于
唯一
列中,因此无需按uniqueResult
限制
第二,一旦你把用户拉上来,你只需比较密码散列,如果可以,让用户通过
以上内容将简化Hibernate逻辑,从而使代码更容易进行故障排除。
大多数网站都是这样做的。至少就我而言 当你运行代码时,你得到了什么/发生了什么?好吧,我没有看到你给我们看的代码中有任何语法错误。如果删除密码条件,它是否有效?(即仅通过“登录”进行搜索)。是的,我尝试仅通过登录进行搜索,但返回的用户始终为空。我不明白是什么问题。我的映射非常简单:2个属性(带有getter和setter的login/password)。问题可能出在除查询之外的其他地方。确保您的
登录名
和密码
与数据库中的值实际匹配,没有编码问题等。那么您是在明文中存储密码吗?