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

私はあなたがそれが必要だと思います

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

もう 1 つ: 使用しているバックティックは、すべてのデータベースで受け入れられるわけではありません。

ちなみにcount(*)はHQLでも使えます。つまり、createSQLQuery の代わりに createQuery を使用できます。HQL の利点は、あるデータベースから別のデータベースに移植できることです。これは、SQL ステートメントの場合は常にそうとは限りません。

于 2012-04-23T08:04:38.520 に答える
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 に答える