我正在使用jsp,hibernate和spring。
我的问题是我有一个名为“ carsearchlist”的对象,并且在carsearchlist中,还有另外两个名为user和car的对象。由于某种原因,此foreach循环将无法工作。
<c:forEach var="csl" items="${carsearchlist}">
${csl.id}
<c:forEach var="name" items="${csl.user}">
${name.first}
</c:forEach>
</c:forEach>
我的数据显示了HQL编辑器,如以下屏幕快照所示:
http://i244.photobucket.com/albums/gg5/robasc/ScreenShot2013-02-12at120841AM_zpsdb5449b4.png
这也是我对CarSearchList的映射:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Feb 9, 2013 8:14:19 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.usedcarsearch.domain.CarSearchList" table="Car_Search_List">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="car" class="com.usedcarsearch.domain.Car" fetch="select">
<column name="fkCarId" not-null="true" />
</many-to-one>
<many-to-one name="user" class="com.usedcarsearch.domain.User" fetch="select">
<column name="fkUserId" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
任何帮助将不胜感激
谢谢
最佳答案
快速而肮脏的是将lazy属性设置为false。
请注意,这可能会导致性能问题。
解决此问题的常用方法是使用“在视图过滤器中打开会话”。
这篇博客文章可以帮助您
http://sourabhissourabh.blogspot.com/2008/03/what-is-opensessioninviewfilter-and-how.html
这种方法的缺点是将对carsearchlist,user或car的设置值保存到数据库中。因此,您必须对此小心。