テーブルからのすべての結果ではなく、返された行の数だけを取得しようとしています。
私はこれが次のようにできることを見ました:
( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()
しかし、このクエリを整数形式で保存しようとすると(Query to Integer
から変換できないと表示されます)
私は動的クエリを使用しており、値はこのようなクエリの下に記載されます
theQuery = "select count(*) from THM as thm " +
"join thm.TMC as tmc " +
"join tmc.TIMCC as timcc " +
"where thm.Qid = :Qid and thm.Cv = :Cv and timcc.Did = :Did and timcc.Cv= :Cv";
Query query = session.createQuery(theQuery);
query.setInteger("Qid", Integer.parseInt(Qid));
query.setInteger("Did", Did);
query.setInteger("Cv",cV);
さて、list.size
を使用せずに、クエリから直接、変数でHibernateクエリを使用して返されたすべての行のカウントを取得するにはどうすればよいですか?
Query.uniqueResult();を試しましたか? ? Select count(*)では1つの数値しか得られないため、int count =(Integer)query.uniqueResult();のように次のように取得できるはずです。
基準に基づいてカウントするには、次のようにします。
Criteria criteria = currentSession().createCriteria(type);
criteria.setProjection(Projections.rowCount());
criteria.uniqueResult();
私は現在Criteriaを使用しているので、それが機能することは確かです。私はここのウェブサイトでuniqueResult()ソリューションを見ました: http://www.jroller.com/RickHigh/entry/hibernate_pagination_jsf_datagrid_prototype1
あなたはこれを行うことができます
long count = (long)session.createQuery("SELECT COUNT(e) FROM Employees e").getSingleResult();
それを試してみてください。
Long count = ((Long) session.createQuery("select count(*) from Book").uniqueResult());
Integer totalBooks = count.intValue();
私のために働く
int list=(int)
sessionFactory.getCurrentSession().createSQLQuery("select count(*) as count from
Book").addScalar("count",IntegerType.INSTANCE).uniqueResult();