问题描述
请教个问题,关于hibernate的 public void getXmlCom(){Document doc = DocumentHelper.createDocument(); //Element rootElement = doc.addElement("root");Session session = (Session) HibernateSessionFactory.getSession();//Session session = factory.openSession();Session dom4jSession = (Session) session.getSession(EntityMode.DOM4J);Transaction tx = session.beginTransaction();List results = dom4jSession .createQuery(" select m.f1,s.f2 from table1 m ,table2 s where m.id=s.id and rownum < ? ") .setInteger(0 , 2) .list();for ( int i=0; i<results.size(); i++ ) { //add the customer data to the XML document Element customer = (Element) results.get(i); //rootElement.add(customer); doc.add(customer);}System.out.println(doc.asXML());tx.commit();session.close();}这种情况下会出问题:如果把hql改成(select m.f1 from table1 m where rownum < ?)就没问题,怎么解释?出错的行为:Element customer = (Element) results.get(i);并不是说执行语句有问题谁能解释下,谢谢各位 问题补充:两个实体?怎么封装?具体说下chenliecan 写道
解决方案
你是要提取两个表吗? 一个对应一个实体嘛,只要你是a.* 就会封装成Object[]举例:select a.name,a.sex from tabl1 a;reult:Object[] = {a.name,a.sex}
解决方案二:
select m.f1,s.f2 from table1 m ,table2 s 。。。。。。。。你这里得到是两个实体,封装应该是Object[]