HQL 联合查询问题 求教 public AllWmsInfo findAllWmsInfo(Integer start,Integer end){ tr=getTr(); Query query=session.createQuery("select p.productName,w from Product p,WmsInfo w where p.productId=w.productId"); List li=query.list();
------解决方案-------------------- select p.productName,w from Product p,WmsInfo w where p.productId=w.productId 改为 select p.productName,w.* from Product p,WmsInfo w where p.productId=w.productId
------解决方案-------------------- select * from WmsInfo w where w.productId in(select productId from Product)
------解决方案-------------------- select p.productName,w from Product p,WmsInfo w where p.productId=w.productId
改为: select w.* from Product p,WmsInfo w where p.productId=w.productId
------解决方案--------------------
额,应该是While循环里AllWmsInfo pp=(AllWmsInfo) a[0];出的错吧? a[0] 是 Query query=session.createQuery("select p.productName,w from Product p,WmsInfo w where p.productId=w.productId"); 查询出来的部分,是一个String,强制转换成AllWmsInfo当然要出错了! 不知道仁兄是否对AllWmsInfo进行了持久化,看样子应该是没有。。。 String hql ="select p.productName,w from Product p,Wms w where p.productId = w.productId"; List list = session.createQuery(hql).list(); System.out.println(list.size()); Iterator it = list.iterator(); while(it.hasNext()){ Object[] a = (Object[])it.next(); AllWmsInfo info = new AllWmsInfo(); info.setProductName((String)a[0]); info.setW((Wms)a[1]); System.out.println(info.getProductName()+"----"+info.getW().getProductId()); } 应该可以解决之。
------解决方案--------------------