Проблемы с переводом запроса в спящий режим - PullRequest
1 голос
/ 22 марта 2011

Я решаю проблему с понижением уровня query.uniqueResult () с помощью hibernate.У меня есть 2 класса: - UserBean - UserLogin

В первом у меня есть сопоставление всех полей моей таблицы, а также все методы для работы с данными.Второй, напротив, представляет только некоторые пользовательские данные, которые будут сохранены в пользовательском сеансе.

В определенный момент в моем методе входа в систему я выполняю запрос и получаю 1 строку (я уже проверил, если запросдействительно возвращает какой-то результат).Дело в том, что я не могу понизить тип объекта (то есть тип query.uniqueResult ()) до типа UserLogin.

Кто-то знает, в чем может быть проблема?

Большое спасибо!

Это метод входа в систему:

public UserLogin login(String email, String password){

    Session session = iniHibernate();
    UserLogin userLogin = null;

    try{
        session.beginTransaction();
        Query query = session.createQuery("select email, name from "
                + "UserBean u where u.email = :user_email and "
                + "u.password = :user_password");
        query.setString("user_email", email);
        query.setString("user_password",password);            

        userLogin = (UserLogin) query.uniqueResult();

        session.getTransaction().commit();
    }catch (Exception e){
        System.out.println(e);
    }
    return userLogin;
}

Ответы [ 2 ]

3 голосов
/ 07 июня 2012

Я решил это, добавив тип объекта к объекту запроса следующим образом:

Query query = session.createQuery(queryString).addEntity(Foo.class);
Foo foo = query.uniqueResult();

Это будет прекрасно работать, не нужно беспокоиться об этой проблеме.

2 голосов
/ 22 марта 2011

В соответствии с документацией Query.uniqueResults :

Удобный метод для возврата одного экземпляра, который соответствует запросу, или ноль, если запрос не возвращает результатов.

Причина, по которой это не работает, заключается в том, что вы возвращаете массив строк, а не UserBean, который, как я полагаю, сопоставлен с UserLogin.

Попробуйте сделать это:

(String[])query.uniqueResult();

или изменение вашего запроса для получения объекта:

Query query = session.createQuery("select u from "
            + "UserBean u where u.email = :user_email and "
            + "u.password = :user_password");

Это должно помочь вам начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...