我正在使用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的设置值保存到数据库中。因此,您必须对此小心。

07-24 17:23