Невозможно получить информацию из моей базы данных - PullRequest
1 голос
/ 21 декабря 2011

Я использую hibernate для взаимодействия с моей базой данных, которая является базой данных MySQL.Я могу написать в нем с EntityManager, но когда я хочу запросить мою БД и получить некоторую информацию, я всегда получаю эту ошибку:

java.lang.ClassCastException: [Ljava.lang.Object; не может быть приведен к com.projetJava.NoteTonSTA.model.Speakers

Speakers - это моя сущность.Как я уже сказал, мне удается без проблем справиться с этим.Вот часть моего кода:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String login = request.getParameter("login");
    String password = request.getParameter("password");
    String queriedPass = null; 
    EntityManager em = emf.createEntityManager(); //emf is declared before. It's an EntityManagerFactory object.

    try {   
        Query querySpeaker = (Query) em.createQuery("SELECT s.password, s.email, s.first_name, s.last_name FROM Speakers s WHERE email=:login");
        querySpeaker.setParameter("login", login);
        Speakers auth = (Speakers) querySpeaker.getSingleResult();
    }

Я получаю логин со своей страницы входа.Я уверен, что он существует (он не выбрасывает исключение «нет результатов»).

Запрос кажется хорошим, но он не может выполнить последнюю строку и правильно выполнить приведение.

Ответы [ 2 ]

3 голосов
/ 21 декабря 2011

Если вы укажете список определенных свойств в вашем SELECT (то есть SELECT s.password, s.email, s.first_name, s.last_name), то Hibernate вернет массив, содержащий только эти свойства, а не всю сущность. Вот почему вы получаете ClassCastException.

Чтобы получить сущность, пропустите предложение SELECT, например,

em.createQuery("FROM Speakers WHERE email=:login");
0 голосов
/ 21 декабря 2011

Попробуйте использовать

"SELECT s FROM Speakers s WHERE email=:login"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...