我项目架构是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还识别不了