1

如何在 Hibernate 中计算 MySQL 表中的记录?我尝试了以下 HQL,但它不起作用。

SELECT COUNT(*) FROM MEMBERS WHERE `username` =:USERNAME OR  `email` =:EMAIL

它用于以下方法:

public boolean checkInfos() {
    Session newSession = NewHibernateUtil.getSessionFactory().openSession();
    int count = (Integer) newSession.createSQLQuery("SELECT COUNT(*) FROM MEMBERS WHERE  `username` ='admin' OR  `email` ='admin'").uniqueResult();

    if (count >= 1) {
        return false;
    } else {
        return true;
    }
}
4

3 回答 3

0

您也可以通过使用标准来实现这一点。

private Number getCount(){
   Criteria criteria = session.createCriteria(Members.class);
   criteria.add(Restrictions.or(Restrictions.eq("username", "admin"), Restrictions.eq("email","admin")));
   criteria.setProjection(Projections.rowCount());
   return (Number) criteria.list();
}
于 2012-04-23T08:53:10.427 回答
0

我想你需要那个

Query q = newSession.createSQLQuery("SELECT COUNT(*) FROM MEMBERS WHERE  username = ? OR  email =?");
q.setParameter( 1, "your username");
q.setParameter(2, "your email");
于 2012-04-22T19:06:38.753 回答
0

Select count(*)返回一个Long,而不是一个Integer

还有一件事:您使用的反引号不是每个数据库都接受的。

顺便说一句,您也可以在 HQL 中使用 count(*)。这意味着,您可以使用 createQuery 而不是 createSQLQuery。HQL 的一个优点是,它可以从一个数据库移植到另一个数据库,而 SQL 语句并非总是如此。

于 2012-04-23T08:04:38.520 回答