忘了说了,我取contents是用下面这样的方法的
List topic = session.find("select topic from Topic topic where topicId="+topicId);
Topic tp=(Topic)topic.get(0);
List contents=tp.getContents();

解决方案 »

  1.   

    是不是应该设成<class name="hibernate.tables.Content" table="content" lazy="true">?content是many的一方,topic是one的一方
      

  2.   

    是你延迟加载的时候,session已经关闭造成的。可以使用OpenSessionInView模式。
    可以用spring提供的OpenSessionInViewFilter 或OpenSessionInViewInterceptor
      

  3.   

    可以这样 :
    Hibernate.initialize(xx.getContents)
    的确是因为session关闭导致这个错误异常
      

  4.   

    谢谢dragon525,我做的是个小东西,没有用到spring,不过还是谢谢你的建议,以后我会去谢谢两位,我用了Hibernate.initialize(topic.getContents())然后再
    contents=topic.getContents()来得到contents就行了,还有个问题,就是initialize以后要不要做什么动作把它手动关掉?还有,如果我用这个方法重新将session打开,会不会造成两次打开session?这样对性能有什么影响吗?最后一个问题就是让我奇怪的地方,我没有手动关闭session,为什么会造成session关闭呢?是不是执行了某个地方就自动关闭session了?我程序里面是到最后一步才HibernateUtil.closeSession()的