Hql语句转换问题。
我项目架构是SSH
我用Ireport 制作报表,并使用Struts2 的List集合作为数据源
要排序成下面:
Java code
60米
60米
60米
800米
800米
800米
5000米
跳高
单独访问这个list集合,是已经排序了的。
但是iReport报表中访问的时候,依然是没有排序的呢
Java code
public List<JianXiangView> listJianXiangView(Long userId) {
// TODO Auto-generated method stub
return this.getHibernateTemplate().find("select id.athleteName,id.itemName,id.fullName,id.athleteId from JianXiangView " +
"where id.userId = '"+userId+"'");
}
Hql语句如上所示。
Sql语句排序如下,
直接访问list集合是排序了的!
ORDER BY CASE WHEN IsNumeric(replace(dbo.item.name, '米', ''))
= 1 THEN Cast(replace(dbo.item.name, '米', '') AS int) ELSE 2147483647 END
现在是 上面的Sql语句可以改成Hql语句不?
------解决方案--------------------
编辑 crosstab properties 的 row groups或column groups,里面有order下拉框选项
sql转hql 其实也简单
一个是对象模型,一个是关系模型
hql里面使用对象导航~
------解决方案--------------------你这个估计是因为hibernate识别不了你的hql。既然你用到了IsNumberic和replace,你就用sql吧。session.createSqlQuery
------解决方案--------------------对啊 许多sql 关键字 hql还识别不了