日期:2014-05-19 浏览次数:20658 次
sql = "select * from LampStateTestInfo where lampID=lampID "+ order by stateTime desc"; SQLQuery query = session.createSQLQuery(sql); query.setInteger("lampID",lampID); query.addEntity("LampStateTestInfo", LampStateTestInfo.class); query.setFirstResult(0); query.setMaxResults(5); List <LampStateTestInfo> list = query.list();
------解决方案--------------------
debug打印出hibernate转化HQL后的sql是什么,然后用这个sql去查一下什么结果
------解决方案--------------------
加了query.setFirstResult(0);
query.setMaxResults(5);
后,sql也改了,你改了吗?
sql = "select * from LampStateTestInfo where lampID=lampID "+
order by stateTime desc";
------解决方案--------------------
加了
query.setFirstResult(0);
query.setMaxResults(5);
sql 也改成了 select * from LampStateTestInfo where lampID=? order by stateTime desc
这就不应该再出错了。
楼主
sql 改成 select * from LampStateTestInfo where lampID=? order by stateTime desc
然后不加下面这两行
query.setFirstResult(0);
query.setMaxResults(5);
看是不是按时间排序,且都查询出了。
------解决方案--------------------
你在怎么检测的结果都是相同记录?
------解决方案--------------------
是不是有时间相同的纪录?其他字段不一样?
------解决方案--------------------
建议加断点调试...
------解决方案--------------------
直接把 lampID 参数写死,然后 数据库 和 Java两端都测试下同一句话,类似:
String sql = "select * from LampStateTestInfo where lampID=100 order by stateTime desc"
看看有何效果。
------解决方案--------------------
改成
sql = "select * from LampStateTestInfo where lampID=lampID and rownum <=5 "+
"order by stateTime desc)";
试试看