有2个实体,A和B,是一对多的关系,A中有属性Set<B> items=new HashSet<B>(),B中有属性A a=new A();数据持久化我用的是hibernate;
我想在JSP中把所有A的属性都列出来,包括Set<B> items中的第一个元素的id,这个值怎么取?
(A我已经保存在request中了) request.setAttribute("as", as);
<c:forEach items="${as}" var="a" >
<td>${a.id}</td>
<td>${a.items.id}</td>   (这样写肯定是不对的)
</c:forEach>
如果Set<B>该成List<B>也可以

解决方案 »

  1.   

    <c:forEach items="${as}" var="a" > 
    <td>${a.id} </td> 
    <td>${a.items.id} </td>  (这样写肯定是不对的) 
    </c:forEach> 
    如果Set <B>该成List <B>也可以这里a就是1个a对象  a对象中items 是b对象的集合
    ${a.items}就是1个a对应b的对象集合。你在循环下应该就可以了。
      

  2.   

    <c:forEach items="${as}" var="a" >
    <td>${a.id} </td>
    <td>  
    <c:forEach items="${a.items}" var="b" >
    ${b.id}
    </c:forEach> 
    </td> 
    </c:forEach> 
      

  3.   

    这样会把items中所有的元素都列出来的,可是我只想要显示第一项!
      

  4.   

    你如果想做到列出A的所有属性,而B只显示一个id,那么你要查询时语句就应该先写好:如:select a.*,b.bid from tableA a left join tableB b on <表A与表B的关联条件> where <条件>;那么这时得到一个集合时as,此时可以这么写:<c:forEach items="${as}" var="a" > 
    <td>${a.id} </td> 
    <td>${a.bid}</td>  
    </c:forEach>因为此时,bid已成为一个属性了。
      

  5.   

    这样看行不行:
    <c:forEach items="${as}" var="a" > 
    <td>${a.id} </td> 
    <td>${a.items[0].id}</td><!--修改处-->
    </c:forEach>