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 这个外键字段了