问题描述
create table t_house(house_id int auto_increment primary key,house_name varchar(200),house_type_id int ....)create table t_house_type(house_type_id int primary key,house_type_name varchar(50),valid bit);house表的外键house_type_id对应t_house_type的主键,我要多表查询获取比如house的name 和house_type的nameString hql = "select new list(a.house_name ,b.house_type_name ) FROM house as a,houseType as b WHERE a.house_type_id=b.house_type_id";Query query = session.createQuery(hql);List list = query.list();取到的list显然只有两个字段,因为我house和houseType都有dao和hbm.xml但是对应这两个字段却没有dao和hbm.xml现在我list值能取到,但是house_list = hs.queryAllHouse();ActionContext.getContext().getSession().put("house_list", house_list);list放入session中,然后到页面jsp显示<s:iterator value="#session.house_list"><s:property value="house_name" /><s:property value="house_type_name" /></s:iterator>却无法显示,不知道怎么解决,求大神指导,如果不在hbm.xml写many-to-one的情况下怎么解决多表查询问题,谢谢 问题补充:我在放session的时候print过,有值啊
解决方案
<c:forEach items="${house_list}" var="orderItem"> ${orderItem[0]} ${orderItem[1]} </c:forEach>orderItem在后台java代码中是什么对象,在这里就是什么对象,后台你查询两个不同对象的字段,是Object[],前台对应的ognl表达式取Object[]对应的列就可以了
解决方案二:
house_list你确定有值吗? <c:forEach items="${orderItemList}" var="orderItem"> ${orderItem[0]}${orderItem[1]}</c:forEach>