Использование hibernate возвращает неправильное значение счетчика запроса - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь проверить, есть ли в базе данных имя пользователя, равное переданной строке. Это метод.

public  boolean alredyTakenUsername(String userna) {
   int numb = 0;
   s = sessionFactory.openSession();
   try {
       String sql = "SELECT COUNT(*) FROM User where User.username= :usern";
       Query query = s.createQuery(sql);
       query.setParameter("usern",userna);
       numb = ((Number)query.getSingleResult()).intValue();
       if (numb == 1)
           return true;
       else
           return false;
   }catch (Exception e){
       e.printStackTrace();
   } finally {
       s.close();
   }
   return false;
}

Я положил в базу данных имя пользователя и с запросом:

select count(*) from User where username='fabio'

ТАБЛИЦА:

USER( username CHAR(20),
      pass CHAR(40),
      loggedstatus BOOLEAN,
      PRIMARY KEY(username));

Возвращает 1, это правильно. Но метод всегда возвращает 0, когда я использую userna=fabio. Я не могу использовать uniqueResult(), потому что Hibernate5 не позволяет этого. Почему?

1 Ответ

0 голосов
/ 31 мая 2019

Я решил проблему следующим образом:

public  boolean alredyTakenUsername(String userna) {
   s = sessionFactory.openSession();

   try {
       String sql = "SELECT COUNT(*) FROM User where User.username= :usern";
       NativeQuery sqlQuery = s.createSQLQuery(sql);
       sqlQuery.setParameter("usern",userna);
       int numb = ((Number)sqlQuery.getSingleResult()).intValue();
       if (numb == 1)
           return true;
       else
           return false;
   } catch (Exception e){
       e.printStackTrace();
   } finally {
       s.close();
   }
   return false;
}

Я думаю, что ошибка произошла из-за использования класса Query, специфичного для запроса Hibernate.NativeQuery признать запрос на диалекте, в моем случае SQL (как метод, который я использую)

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