hibernate 打印的是一个E,什么意识啊?
连的是mssqlpublic 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()才行,具体我也有点模糊了。答提问题就这样吧,自己多百度下,高技术的自己多折腾
--------------------编程问答--------------------
多谢好汉 --------------------编程问答--------------------
楼主说的对啊,再说你要打印的是数据库值,为啥子还输出个Object类型的,起码需要转化下吗,比如你数据库是varchart的那就 for(int i=0;i<list.size();i++){
String str = (String)list.get(i);
System.out.println(str);
} --------------------编程问答--------------------