public List findMyClientList(final String hql, final int offset,
final int length) {
List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return list;
}
hql:String queryString = "from CrmClients as a inner join a.CrmProduct where a.userId = "+userId+" and a.nowStatus = "+nowStatus;这样返回的List 里面存的是object 怎么转换成 CrmClients
for(Object object : list){ CrmClients client = (CrmClients) object; client.getCusName();
}
这样取会报java.lang.ClassCastException: [Ljava.lang.Object;
赋给client
有没有办法能直接赋给bean 到jsp直接
<s:iterator value="utils.list"> 的方法?
那么就可以返回一个泛型结果集么.
如果结果包含多个表的信息,那么就需要这样处理
for(Object object : list){ Object[] objs= (Object[]) object;
//objs[0],objs[1]就代表着你的字段信息。 }
while(iter.hasNext())
CrmClients client=(CrmClients ) iter.next();
<many-to-one name="CrmProduct" column="productId" cascade="none" insert="false" update="false" class="cn.unjob.crm.form.CrmProduct" fetch="select">
</many-to-one>当然有。加上inner join 就是object 不加就能crmclients
那么页面中直接<s:iterator value="list" id="xx">
<s:property value="xx.属性"/>
或者通过jstl都可以!
</s:iterator>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:forEach items="${list }" var="item">
${item[0].cusName }, ${item[1].productName } <br/>
</c:forEach>
while(it.hasNext()){
Object [] obj = (Object [])it.next();
CrmClients cm = (CrmClients ) obj[0];
System.out.println(cm.getXX());
CrmProduct cp = (CrmProduct ) obj[1];
System.out.println(cp.getXX());
}
for(int i=0;i<list.size();i++){
Object[] objArray=(Object[])list.get(i);
for(int j=0;j<objArray.length;j++){
if(objArray[j] instanceof CrmClients){
CrmClientsnote=(CrmClients)objArray[j];
}
if(objArray[j] instanceof CrmProduct){
CrmProduct note=(CrmProduct)objArray[j];
}
}
}
public List findMyClientList(final String hql, final int offset,
final int length) {
List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return list;
}很明显 在这段话里边你返回的只是一个list集合 集合在默认的情况下 储存的是Object类型的对象 ,那么在你取出数据的时候list中有的只是Object对象m所以以至你在循环遍历的时候出现类型转换错误 鉴于这种错误呢 楼主 最好的解决办法就是用强制类型集合 也就是List<你的类名> list = new List<类名>();这样你在循环遍历的时候就不会报错误了!
看JDK的版本,可以用泛型比较方便!
如果实在不想改的话 就改一下获取循环方式吧
for(int i=0;i<list.size();i++){
CrmClients crmClients=(CrmClients)list.get(i);
client.getCusName();
}