ibeautiful
2023-03-12 17:13:10
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>請(qǐng)問(wèn)有哪兒沒(méi)對(duì)嗎?用上面方法會(huì)報(bào)錯(cuò)(java.lang.NumberFormatException: For input string: "xm")count在數(shù)據(jù)庫(kù)里沒(méi)有這個(gè)字段,但是我在javabean里有這個(gè)屬性拿來(lái)臨時(shí)存儲(chǔ)統(tǒng)計(jì)值的,把最上面的hibernate實(shí)現(xiàn)方法換成jdbcpublic 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; }就沒(méi)有問(wèn)題。
2 回答

有只小跳蛙
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
我印象中createSQLQuery方法,然后list里返回不是你所要的模型對(duì)象,而是一堆object類型的數(shù)組,也就是第一條記錄就是一個(gè)數(shù)組,你可以在return list 之前,把list里的東西遍歷出來(lái)看一下,這樣有助于你解決問(wèn)題。

互換的青春
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
Query query = session.createSQLQuery("select xm,count(xm) count from RcwhB group by xm");
返回的是一個(gè)list 查詢的時(shí)候你在里面加了一個(gè)count 的字段
而你對(duì)應(yīng)的RcwhB model類里面肯定沒(méi)有這個(gè)count屬性沒(méi)有g(shù)etCount()和set方法
所以導(dǎo)致hibernate查詢的時(shí)候不能幫你封裝成對(duì)應(yīng)的modle
所以就報(bào)你上面的錯(cuò)誤
- 2 回答
- 0 關(guān)注
- 96 瀏覽
添加回答
舉報(bào)
0/150
提交
取消