连的是mssql
public void testQuery(){
Session session=null;
Transaction tx=null;

try{
session=HibernateUtil.getCurrentSession();
 tx=session.beginTransaction();
 //List list=session.createQuery("select * from emp").list();
 List<Object[]> list=session.createSQLQuery("select top 2 ShippingOrderNo,CustomerNo from ShippingOrder").list();

for(int i=0;i<list.size();i++){
Object[] objs=(Object[])list.get(i);
System.out.println(objs[0]);
 }

}catch(Exception e){
     e.printStackTrace();
            if(tx!=null){
                tx.rollback();
            }
            throw new RuntimeException(e.getMessage());
}finally{
          if(session!=null&&session.isOpen()){
                session.close();
            }
}
}打印出:
---------------------------------------Hibernate: select top 2 ShippingOrderNo,CustomerNo from ShippingOrder
E
E
但是,我要的结果是:
01233 1222
01234 12dfdfd
因为数据库里,就是这样的

解决方案 »

  1.   

    我建议你先在   List<Object[]> list=session....这下个断点。执行到这的时候 看看list到底是个神马。
    还有,你这Quer...。list()得到的已经是List集合了,为什么还用List(Object[])  来装?
      

  2.   

    当然会是这样,你代码都有问题。就像2L说得,你用object封装明显不对,你答应出的只是object类的名称,所以都是E,这个E可能就是某一个累的首字母,蓑衣问题一,自己写一个数据库对应的泪来封装,list数据。
         第二,你只是创建了SQL查询,你都没comMIT,我记得是需要session.commit()才行,具体我也有点模糊了。答提问题就这样吧,自己多百度下,高技术的自己多折腾
      

  3.   

    楼主说的对啊,再说你要打印的是数据库值,为啥子还输出个Object类型的,起码需要转化下吗,比如你数据库是varchart的那就  for(int i=0;i<list.size();i++){
                    String str = (String)list.get(i);
                    System.out.println(str);
                 }
      

  4.   

    数据库里的类型不定啊,有varchar2,int,float
    不能统一成String啊。
    好汉,你说要如何办?
      

  5.   

    E就是一个对象,你还要再遍历obj[i]才行。或者tostring看看
      

  6.   

    数据库里的类型不定啊,有varchar2,int,float
    不能统一成String啊。
    好汉,你说要如何办?我是打个比方,你可以一个一个的转化啊,不便利直接取集合中的值就行int就转化为Interger
      

  7.   

    数据库里的对象读出来打印出来,object类型打印肯定不行,需要转换,而且你要验证到底list读取到的是什么?
    这个应该没什么难的吧,主要的就是类型转换问题
      

  8.   

    http://www.docin.com/p-678124367.html
    hibernate知识总结,感兴趣的可以看看