Привет. Я пытаюсь получить простой объект из БД с помощью комбинации хэша пароля и имени пользователя ....
username = request.getParameter("username");
password = request.getParameter("password");
// Converting request password to hash
String passwordHash = SecurityUtil.convertStringToSHA1(password);
Session hs = HibernateUtil.getSessionFactory().getCurrentSession();
hs.beginTransaction();
//query for a single result of matching username with password
//Query hquery = hs.createQuery("from User where id = :id");
//hquery.setParameter("id", 33l); <- THIS QUERY WORKS
Query hquery = hs.createQuery("from User where password = :password and userName = :userName"); //<- password is a sha1 hash in the db
hquery.setString("userName", username);
hquery.setParameter("password", passwordHash);
User user = (User)hquery.uniqueResult(); //<- Always NULL WHY There should be a unique result.
log.info("UR: "+username);
log.info("PR: "+passwordHash);
if(user!=null) {
//never reached
log.info("UDB: "+user.getUserName());
log.info("PDB: "+user.getPassword());
} else {
always reaches here
}
Есть идеи?Или это означает, что нет уникальных результатов?
Мои хэши sha1 не засолены, однако хеши паролей генерируются из случайной строки с использованием общих Apache, которые должны быть более или менее свободны от конфликтов ...
Кроме того, я впервые делаю спящий режим, так что я могу где-то ошибаться ...