Noob关于hibernate标准的问题

时间:2011-01-02 19:25:05

标签: java hibernate criteria

我有一个名为User的类,它有2个属性:login / password。我正在尝试使用hibernate标准在我的应用程序中验证用户,但我的请求不起作用。

[EDIT]返回值为NULL。我的数据库中有两个用户进行测试。

这是我的代码:

@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新年快乐!!

1 个答案:

答案 0 :(得分:0)

您应该首先从数据库中检索用户。如果用户不存在,则在登录页面上显示一条消息。您的所有登录名都应位于unique列中,因此无需按uniqueResult限制。

其次,一旦你将用户拉起来,你只需比较密码哈希就可以了,让用户通过。

以上将简化您的Hibernate逻辑,从而使您的代码更容易进行故障排除。 这就是大多数网站完成它的方式。至少就我而言。