繁体   English   中英

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

[英]Using hibernate return wrong count value of a query

我正在尝试检查数据库中是否有与用户名相同的用户名。 这是方法。

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不允许它。 为什么?

我解决了这个问题:

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;
}

我认为错误是由于使用了特定于Hibernate查询的类Query NativeQuery允许查询方言,在我的例子中是SQL(就像我使用的方法)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM