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