【问题标题】:Using hibernate return wrong count value of a query使用休眠返回查询的错误计数值
【发布时间】:2019-05-06 18:41:44
【问题描述】:

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

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

【问题讨论】:

    标签: java mysql sql hibernate


    【解决方案1】:

    我解决了这样的问题:

    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 查询的类QueryNativeQuery 承认方言查询,在我的例子中是 SQL(就像我使用的方法)

    【讨论】:

      猜你喜欢
      • 2019-03-13
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多