日期:2014-05-19  浏览次数:20700 次

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还识别不了