当前位置:编程学习 > JAVA >>

hibernate 打印的是一个E,什么意识啊?

连的是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
因为数据库里,就是这样的 --------------------编程问答-------------------- 我建议你先在   List<Object[]> list=session....这下个断点。执行到这的时候 看看list到底是个神马。
还有,你这Quer...。list()得到的已经是List集合了,为什么还用List(Object[])  来装? --------------------编程问答-------------------- 哦,好吧  我没看见是查询的两列。。。不过  你还是先调试一下吧。 --------------------编程问答-------------------- 当然会是这样,你代码都有问题。就像2L说得,你用object封装明显不对,你答应出的只是object类的名称,所以都是E,这个E可能就是某一个累的首字母,蓑衣问题一,自己写一个数据库对应的泪来封装,list数据。
     第二,你只是创建了SQL查询,你都没comMIT,我记得是需要session.commit()才行,具体我也有点模糊了。答提问题就这样吧,自己多百度下,高技术的自己多折腾
--------------------编程问答--------------------
引用 3 楼 LS1firesoar 的回复:
当然会是这样,你代码都有问题。就像2L说得,你用object封装明显不对,你答应出的只是object类的名称,所以都是E,这个E可能就是某一个累的首字母,蓑衣问题一,自己写一个数据库对应的泪来封装,list数据。
     第二,你只是创建了SQL查询,你都没comMIT,我记得是需要session.commit()才行,具体我也有点模糊了。答提问题就这样吧,自己多百度下,高技术的自己多折腾


多谢好汉 --------------------编程问答--------------------
引用 1 楼 yangtong501703793 的回复:
我建议你先在   List<Object[]> list=session....这下个断点。执行到这的时候 看看list到底是个神马。
还有,你这Quer...。list()得到的已经是List集合了,为什么还用List(Object[])  来装?

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

我建议你先在   List<Object[]> list=session....这下个断点。执行到这的时候 看看list到底是个神马。

                System.out.println(str);
             }

数据库里的类型不定啊,有varchar2,int,float
不能统一成String啊。
好汉,你说要如何办? --------------------编程问答-------------------- E就是一个对象,你还要再遍历obj[i]才行。或者tostring看看 --------------------编程问答--------------------
引用 7 楼 fangmingshijie 的回复:
E就是一个对象,你还要再遍历obj[i]才行。或者tostring看看


谢谢你啊。 --------------------编程问答--------------------
引用 6 楼 bonlog 的回复:
Quote: 引用 5 楼 yilvqingtai 的回复:

Quote: 引用 1 楼 yangtong501703793 的回复:

我建议你先在   List<Object[]> list=session....这下个断点。执行到这的时候 看看list到底是个神马。

                System.out.println(str);
             }

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


我是打个比方,你可以一个一个的转化啊,不便利直接取集合中的值就行int就转化为Interger --------------------编程问答-------------------- 数据库里的对象读出来打印出来,object类型打印肯定不行,需要转换,而且你要验证到底list读取到的是什么?
这个应该没什么难的吧,主要的就是类型转换问题 --------------------编程问答-------------------- http://www.docin.com/p-678124367.html
hibernate知识总结,感兴趣的可以看看
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,