hibernate查询SQL语句(统计)时的问题

Hibernate:publicList<RcwhB>LoadAllGroupByName(){Sessionsession=HibernateSessionFactor... Hibernate:
public List<RcwhB> LoadAllGroupByName(){
Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createSQLQuery("select xm,count(xm) count from RcwhB group by xm");
List list = query.list();
session.getTransaction().commit();
return list;}
==============
Servlet:
... ...
List list = dao.LoadAllGroupByName();
request.setAttribute("rcwh_Load_All_Count", list);
request.getRequestDispatcher("/Admin_users/rcwh_tj.jsp").forward(request, response);
==============
JSP:
<c:forEach items="${rcwh_Load_All_Count}" var="r">
${r.xm }:${r.count }<br>
</c:forEach>

请问有哪儿没对吗?
用上面方法会报错(java.lang.NumberFormatException: For input string: "xm")
count在数据库里没有这个字段,但是我在javabean里有这个属性拿来临时存储统计值的,
把最上面的hibernate实现方法换成jdbc
public List<RcwhB> loadAllByCount() {
Connection conn = DBConnection.getConnection();
String sql = "select xm,count(xm) cou from RcwhB group by xm";
try{
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);

while(rs.next()){
RcwhB r = new RcwhB();
r.setXm(rs.getString("xm"));
r.setCount(rs.getString("cou"));
list.add(r); }
}catch(SQLException e){
e.printStackTrace(); }
return list; }
就没有问题。不知道是哪儿出了错。请帮忙看一下
下面回答都说count()函数查询出来的值不能与JAVABEAN对应。但是我在JAVABEAN里是增加了一个count属性的,也有GET和SET方法。用JDBC能查出来。用HIBERNATE就查不出来了。
展开
 我来答
miniapp15iwk0ai00uu0
2010-05-25 · TA获得超过159个赞
知道小有建树答主
回答量:255
采纳率:0%
帮助的人:140万
展开全部
Query query = session.createSQLQuery("select xm,count(xm) count from RcwhB group by xm");

返回的是一个list 查询的时候你在里面加了一个count 的字段
而你对应的RcwhB model类里面肯定没有这个count属性没有getCount()和set方法
所以导致hibernate查询的时候不能帮你封装成对应的modle
所以就报你上面的错误
ZESTRON
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸... 点击进入详情页
本回答由ZESTRON提供
百度网友686e13a44
2010-05-25 · TA获得超过141个赞
知道答主
回答量:71
采纳率:0%
帮助的人:53.7万
展开全部
1楼回答是正确的,你的SELECT语句中用了Count函数,查询出来的结果肯定是无法和Java Bean关联的。list里面存放的是Object数组。解决方法就是把得到的list遍历一下然后用Object.toString()赋值进去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ycdxg
2010-05-25 · TA获得超过410个赞
知道答主
回答量:407
采纳率:0%
帮助的人:304万
展开全部
我印象中createSQLQuery方法,然后list里返回不是你所要的模型对象,而是一堆object类型的数组,也就是第一条记录就是一个数组,你可以在return list 之前,把list里的东西遍历出来看一下,这样有助于你解决问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式