谁能告诉我如何获取HQL中特定列的计数。 在下面的代码中,我想要具有参数sClass和section的行数。 某些数据来自sClass和section的前端,在此基础上,我需要计数。
for(int i=0; i<= (n-m); i++)
答案 0 :(得分:0)
您无需在select子句中使用查询参数。
您可以简单地使用下面提供的实用程序类:
Query query = sessionFactory.getCurrentSession().createQuery("select count(*) " +
"from student_details sd " +
"where sd.sClass=:sClass and sd.section=:section");
query.setParameter("sClass", sClass);
query.setParameter("section", section);
int count = HibernateUtils.count(query);
实用程序类:
public final class HibernateUtils {
private HibernateUtils() {
}
public static int count(Query query) {
Number result = (Number) query.uniqueResult();
return result == null ? 0 : result.intValue();
}
public static int count(Criteria countCriteria) {
Number count = (Number) countCriteria
.setProjection(Projections.rowCount())
.uniqueResult();
return count.intValue();
}
}
您还可以使用Criteria
(第二种实用方法)进行计数。
实现注意:请记住,您应该在HQL中指定实体名称(而非表名称)。因此,如果您有一个表student_details
和一个实体StudentDetail
(不是复数),则必须编写:
select count(*) from StudentDetail sd