我的TbBook.hbm.xml中这样配的:
<hibernate-mapping>
    <class name="cn.zwei.vo.TbBook" table="TB_BOOK" schema="SCOTT">
        <id name="bookid" type="java.lang.String">
            <column name="BOOKID" length="16" />
            <generator class="sequence" >
             <param name="sequence">seq_book</param>
            </generator>
        </id>
        <many-to-one name="tbSpeak" class="cn.zwei.vo.TbSpeak" fetch="select">//这是TbBook的一个外键类
            <column name="SPEAKID" length="16" />       
        </many-to-one>
................下面我在页面上要求显示TbBook的所有信息,包括tbSpeak(语种类)的语种名(SPEAKNAME),不要显示他的(SPEAKID)如何实现,
有人跟我提过,说只要把下面的SPEAKID改成SPEAKNAME就行了,不可能这样的,因为只能通过主键映射,名字不可能,有没高手有解决方法,期待高手解答~~~
                                <td align="center">教材名称</td>
    <td align="center">教材等级</td>
    <td align="center">所属语种</td>
       
                          <logic:present name="list">
    <logic:iterate id="book" name="list">
    <bean:define id="tbSpeak" name="book" property="tbSpeak"/>
    <tr>
    <td align="center"><bean:write name="book"property="bookname"/></td>
    <td align="center"><bean:write name="book"property="booklevel"/></td>
    <td align="center"><bean:write name="tbSpeak"property="speakid"/></td>//这个要显示名字,不要显示ID~~如何实现

解决方案 »

  1.   

    哈,你这里只要把<bean:write name="tbSpeak"property="speakid"/>改成<bean:write name="tbSpeak"property="speakname"/>不就可以了。
    另外如果你想用speakname拿来关联,当然可以:用property-ref这个属性就可以,如下
            <many-to-one name="tbSpeak" class="cn.zwei.vo.TbSpeak" fetch="select" property-ref="speakname">//这是TbBook的一个外键类 
    但是,如果你的目的只是想少取一张表,提交性能的话,这好象没有用,即使设置为lazy,它也会去取两张表的数据。哈,一时半会说不明白,你自己试 试就知道了。
      

  2.   

    可以吗,我试了N次了,怎么还是不行,报这种错:
    我改成这样: <td align="center"><bean:write name="book" property="bookname"/></td>
         <td align="center"><bean:write name="book" property="booklevel"/></td>
         <td align="center"><bean:write name="tbSpeak" property="speakname"/></td>
      </tr>
    报这种错:
    org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/school/showbooklist.jsp at line 147144:     </html:multibox><br></td>
    145:      <td align="center"><bean:write name="book" property="bookname"/></td>
    146:      <td align="center"><bean:write name="book" property="booklevel"/></td>
    147:      <td align="center"><bean:write name="tbSpeak" property="speakname"/></td>
    148:   </tr>
    149:   </logic:iterate>
    150:   </logic:present>
    javax.servlet.ServletException: javax.servlet.jsp.JspException: Exception thrown by getter for property: "speakname" of bean: "tbSpeak"
    这错误我也小得,说没有get方法,可是我明明写了吗