hibernate取一张表里是外键的字段并在jsp中显示出来的方法

例如:有student和studentcard两张表,

student{sid(pk),sname}  studentcard{cid,sid(fk),cname}  studentcard字段sid参照student字段sid,现在想取studentcard所有字段并在jsp页面显示出来。

这时会出问题,原因是当用annotation来写映射关系的时候,studentcard实体类里只会出现student类得对象,而不会出现sid字段,所以当在jsp页面上遍历查询studentcard返回的集合时,会因为没有sid字段而取不出该字段。

解决方法:新建一个和数据库没有映射关系的studengcard2类{cid,sid,cname,getter/setter()}

在DAO层里:

Criteria criteria = session.createCriteria(student.class); 

     List list = criteria.list();

     Iterator it = list.iterator();
     List<studengcard2> list1 = new ArrayList<studengcard2>();
     
     studengcard scard = null;
     
     while(it.hasNext()){
      scard= (studengcard)it.next();
      studengcard2 scard2= new studengcard2();
      scard2.setcid(scard.getcid());

      scard2.setname(scard.getcname());

     scard2.setsid(scard.getstudent().getsid());//这里是关键,通过去student表里取出sid,然后set进studentcard2类里

      list1.add(scard2);    

     return list1;

在jsp层:

通过<c:forEach var="list" items="${list1}" varStatus="status">
         <tr>

          <td>
           <c:out value="${list.sid}" />
          </td>

     </tr>

</table>

就可以取出sid 这个外键字段了

原文地址:https://www.cnblogs.com/damonhuang/p/2275625.html