日期:2014-05-17  浏览次数:20658 次

SSH如何获取外键表ID对应的Name问题,并在页面显示
本帖最后由 lvbolvtian 于 2011-08-03 16:14:30 编辑
问题如题。
是这么一个情况:
有一个数据库表:
quesitiontbl问题表,用于存储 某个人 发布的问题,
表里面有部分字段(id主键,content问题内容,SystemMembeID外键表示谁发的问题)

外键表 systemmembertbl,部分字段(id主键,name发布人的姓名)

然后我构建了对应的实体类,以及映射文件,下面就是Question类的映射文件部分内容。
sm是定义在Question类里面的SystemMember类的一个实例。问题与发布者为多对一的关系


<many-to-one name="sm" class="com.mytest.entity.SystemMember">
<column name="systemmemberid" ></column>
</many-to-one>


然后我再QuestionAction里面写了一个方法获取了所有的问题:

public String listQuestion() throws Exception {
// TODO Auto-generated method stub
String hql="from Question";
questionsList= basedao.list(hql);
return SUCCESS;
}


以上这些均无错误。

在JSP页面里面就是将所有的问题列出来,即上面代码的questionsList(为了简单,下面的struts代码中只显示两列):


    <table>
    <s:iterator value="#request.questionsList">
    <tr>
    <td><s:property value="sm.id" /></td>
    <td><s:property value="content" /></td>
    </tr>
    </s:iterator>
    </table>




在页面能够成功显示sm.id和内容。

下面就是我提出的问题:
现在只能得到 发布者的id,并在页面显示,并不能显示发布者的名字sm.name。
我想实现在页面中显示发布者的名字sm.name,而不是sm.id,如何实现,就像下面这样:

<td><s:property value="sm.name" /></td>
<td><s:property value="content" /></td>


如果sm.name无法实现,请教各位大侠,如何用别的方法实现。谢谢!

------解决方案--------------------
最简单的方法。你设上lazy 就可以了
------解决方案--------------------
<many-to-one name="sm" class="com.mytest.entity.SystemMember"  fetch="select" >
    <column name="systemmemberid" ></column>
</many-to-one>