休眠。如何读取未映射的查询结果?

时间:2015-07-14 04:03:25

标签: hibernate

我在hibernate和java中真的很新,而且有些东西我不明白如何解决。(我试图修改现有的代码)

我有一张叫做ct0016582213的桌子 它有一个映射文件:Track.hbm.xml 和实体类:Track.class

直到这里一切正常,当我执行查询以提取表中的一些值时,我可以通过hibernate映射读取表中的值。

但我的问题是我正在尝试做一些自定义SQL查询,我想读取结果表值,但我得到了[Ljava.lang.Object; @ 15df563而不是实际值。

//part of the code
session = HibernateUtils.getSession();
session.beginTransaction();

String mql= "SELECT  DATE_FORMAT(createtime,'%Y-%m-%d') as fecha, FORMAT((MAX(mileage)- MIN(mileage)),1) as kilom FROM ct0016582213 where createtime between '2015-06-02%' and '2015-06-30%' GROUP BY  DATE_FORMAT(createtime,'%Y-%m-%d')";

SQLQuery query1 = session.createSQLQuery(mql);
List kilom = query1.list();
str=str + "<item>"+ kilom.get(0)+"</item>";
str=str + "<item>"+ kilom.get(1)+"</item>";
session.getTransaction().commit();
response.setCharacterEncoding("UTF-8");
response.setContentType("text/xml");
out.write(str);

这给出了两列结果,但是当我想显示一些值而不是[Ljava.lang.Object; @ 15df563。

并且我很困惑,因为如果查询只有一列作为结果我可以读取并显示结果查询中的实际值,例如,如果我使用下一个sql查询,我可以阅读例如2015-06-05 as结果

String mql= "SELECT  DATE_FORMAT(createtime,'%Y-%m-%d') as fecha FROM ct0016582213 where createtime between '2015-06-02%' and '2015-06-30%' GROUP BY  DATE_FORMAT(createtime,'%Y-%m-%d')";

当有多个列来获取值而不是对象时,我应该如何读取结果表中的值?

我可以避免映射吗?如果没有..如何映射一个查询结果的表?我怎样才能读出值

我解释了我的问题吗?,:-) 谢谢你的帮助

0 个答案:

没有答案