Hibernate Query

@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


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值