为了账号安全,请及时绑定邮箱和手机立即绑定

HQL查询两个日期间记录

hql查询两个日期间的记录是下面那样吗?为什么报错

	@Test
	public void secondTest() throws ParseException{
		String hql = "select new Map(c.name as name,o.tradedate as tradedate,o.status as status,o.amount as amount) "
				+"from Customer c,Orderform o "
				+"where o.tradedate between ? and ? and o.status in('已发货','已付款') and o.price > 1000 "
				+"order by o.status asc,o.tradedate desc,o.price desc";
		Query query = session.createQuery(hql);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date1 = sdf.parse("2015-05-01");
		Date date2 = sdf.parse("2015-06-01");
		query.setDate(0, date1);
		query.setDate(1, date2);
		List<Map> results = query.list();
		for(Map r:results){
			System.out.println("商品名称:"+r.get("0"));
			System.out.println("交易日期:"+r.get("1"));
			System.out.println("交易状态:"+r.get("2"));
			System.out.println("交易金额:"+r.get("3"));
		}
	}
	


正在回答

3 回答

http://img1.sycdn.imooc.com//5746bcef0001c1a010110589.jpg

看你的类对不对,我对应的类是Order

0 回复 有任何疑惑可以回复我~
#1

sntatas 提问者

非常感谢!
2016-05-26 回复 有任何疑惑可以回复我~
#2

sntatas 提问者

原来我原先的查询语句是字段名写错了- -! 修改了字段名,上面的那种方法也可以,还有取了别名后就不能通过下标读值了
2016-05-26 回复 有任何疑惑可以回复我~

下面是错误堆栈

http://img1.sycdn.imooc.com//5746b04b0001411c07540445.jpg

0 回复 有任何疑惑可以回复我~

String hql = "select new map(customer.name,tradedate,status,"
    + "amount) from Order where tradedate between "
    + "'2015-5-1' and '2015/6/1' and status in "
    + "('已发货','已付款') and amount > 1000"
    + "order by status asc,tradedate desc,amount desc";
  List<Map> maps = session.createQuery(hql).list();
  for (Map map : maps)
   System.out.println(map.get("0") + " " + map.get("1") + " " + map.get("2") + " " + map.get("3"));


0 回复 有任何疑惑可以回复我~
#1

sntatas 提问者

还是不行,报的相同的错误
2016-05-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

HQL查询两个日期间记录

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信