jdk1.6, hibernate 3.5.6, oracle 10g
表normalvoucher 对应 类 NormalVoucher
表结构为: id       number      类别内的序号 
           pztype   varchar2    凭证编号
           pzname   varchar2    凭证名称
           unit     varchar2    单位
           pzlb     varchar2    凭证类别
其中,pztype为主键现在我要把表里的数据全部取出,但是要按照一定的顺序排列。排序原则为:首先按照凭证类别,相同类别的要排在一起,然后按照类别内的序号排列,即同一类别的数据按照序号递增。直接pl/sql下输入sql语句:select * from normalvoucher order by pzlb, id
查询的结果符合上面的要求。在程序里是用hibernate连接的数据库,我尝试了以下四种写法:
第一种:      Criteria crit = session.createCriteria(NormalVoucher.class);  
      crit.addOrder(Order.asc("pzlb"));
      crit.addOrder(Order.asc("autoid"));
      list = crit.list();
 
 
第二种:       String hql = "from NormalVoucher order by pzlb, autoid";
       Query query = session.createQuery(hql);
       list = query.list();


第三种:String sql = "select * from normalvoucher order by pzlb, autoid";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(NormalVoucher.class);
list = query.list();
第四种:String sql = "select * from normalvoucher order by pzlb, autoid";
Query query = session.createSQLQuery(sql);
list = query.list();
大家说这四种写法运行出来的结果是什么样的呢?只有第四种写法查到了我要的结果,前三种的查询结果都一样,但是都不对!这是为什么呢?为什么呢?为什么呢??