使用休眠返回错误的查询计数值

时间:2019-05-06 18:41:45

标签: java mysql sql hibernate

我正在尝试检查数据库中是否存在与传递的String相等的用户名。 这是方法。

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。 但是当我使用userna=fabio时,该方法总是返回0。 我不能使用uniqueResult(),因为Hibernate5不允许使用它。 为什么?

1 个答案:

答案 0 :(得分:0)

我解决了这样的问题:

(function() {
   'use strict';
   //get the meta element with id fedora-keys
   var link = document.querySelector('meta#fedora-keys'); 
   //set the data-env attribute to development
   link.setAttribute('data-env', 'development');
})();

我认为该错误是由于使用特定于Hibernate查询的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接受方言查询,在我的情况下为SQL(例如我使用的方法)