用 Hibernate 作为持久层,数据库里news表里有一个时间字段,是datetime类型的,对应的 持久化类的属性是
Timestamp 类型的,数据库用的是 mysql,想实现一个查询操作,就是把数据库 news 表里的按照时间降序排列,并把大于某个时间的记录取出来,比如,想把比 2015-04-10 10:04:25 这个时间更晚的记录取出来,最多取出20条,我写的 HQL 代码如下:
Timestamp timeStamp = new Timestamp(time);
String queryString = "from News news order by news.time desc where news.time>?";
HibernateTemplate hibernateTemplate = this.getHibernateTemplate();
hibernateTemplate.setMaxResults(20);<p></p>
<p>
<span style="background-color:#DFC5A4;"> return hibernateTemplate.find(queryString, timeStamp);</span>
</p>
<p>
但是有报错:
</p>
<p>
</p><p>
org.springframework.orm.hibernate3.HibernateSystemException: ordinal parameter mismatch; nested exception is org.hibernate.HibernateException: ordinal parameter mismatch<br>
</p><p>
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)
</p>
<p>
</p><div>
<span style="background-color:#DFC5A4;">Caused by: org.hibernate.HibernateException: ordinal parameter mismatch</span><br>
</div>
<p></p>
<p></p>
<p></p>
哥哥,你的sql好像是有问题吧。
orderby是排序的,放最后的...
from News news where news.time>? order by news.time desc
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。