@Override
public long findByPropertiesAndKBN(String i_property1, String i_property2,
String i_kbn) throws RuntimeException{
String sql="SELECT COUNT(*) FROM Category c ";
sql+="WHERE c.i_kbn ='"+i_kbn+"' AND ('"+i_property1+"' BETWEEN I_PROPERTY1 AND I_PROPERTY2)";
sql+="OR ('"+i_property2+"' BETWEEN I_PROPERTY1 AND I_PROPERTY2) ";
sql+="OR (I_PROPERTY1 BETWEEN '"+i_property1+"'AND '"+i_property2+"')";
sql+=" OR (I_PROPERTY2 BETWEEN '"+i_property1+"' AND '"+i_property1+"');";
/*Query query= getSession().createQuery(sql);
long num=Long.parseLong(query.list().get(0).toString());*/
/*Query query=getSession().createQuery(sql);
long num=((Number)query.iterate().next()).longValue(); */
/*String num = getSession().createQuery(sql).uniqueResult().toString();
return Long.parseLong(num);*/
/*Query query = getSession().createQuery(sql);
Long num = (Long) query.uniqueResult(); // 执行查询*/
/*Query query = getSession().createSQLQuery(sql);
BigDecimal result = (BigDecimal) query.uniqueResult();
return result.longValue();*/
/* QueryHelper queryhelper=new QueryHelper(Category.class, sql);
Query countQuery = getSession().createQuery(queryhelper.getCountQueryHql());
Long count = (Long) countQuery.uniqueResult(); // 执行查询
*/
return ((Number)getSession().createCriteria(Category.class).setProjection(Projections.rowCount()).uniqueResult()).longValue(); //返回当前表中的记录条数
return getSession().createSQLQuery(sql).list().get(0).toString();
}当进行sql语句查询记录条数时,即select count(*) from ...;进行了以上尝试,发现只有最后一种使用于本次编程,所有要对一下几个问题作出研究
1.sql和hql
2.对于希望得到不同的结果时应对于的query的返回类型应该如何定义,参见文章:http://blog.sina.com.cn/s/blog_aaa756740101fncl.html
3.查询方式汇总:http://blog.youkuaiyun.com/tangzenglei/article/details/49000219
2094

被折叠的 条评论
为什么被折叠?



