没数过,不过我发现当我把下面的语句注释掉就由运行正常变为不正常了;
    //showBlog(blog);                      //当我把着个方法注释掉后,运行时就会抛出异常

解决方案 »

  1.   

    mt的方法里面不要关session
    public static void main(String[] agrs){
    ModelTest mt=new ModelTest();
    mt.showBlog(mt.getBlog());
    HibernateSessionFactory.currentSession().close();
    }
      

  2.   

    如果必须要关的话,有没有解决的办法呢?
      我想可不可以让session被close掉时,自动将session的load()方法得到的对象新建并把这个对象的属性全部用数据库中的相应字段填充呢?
      

  3.   

    我问你这个不是随便问你的,你数一下就知道你是在去那个值的时候出现的错误。不过按照你的说法应该是files上面用了lazy造成的错误,但是看你的mapping文件又把lazy="false",搞不懂。
      

  4.   

    <class name="net.pengzeng.blog.Blog" lazy="false" >
      

  5.   

    抓取策略问题
    你的blog和author做了多对一的映射,而且默认的抓取策略是lazy,当你取blog中对应的author时,hibernate会重新在数据库中取author,所以你在getBlog方法内session未关闭时可以取到,同时这个author也已经成为持久状态,但是去掉getBlog中的showBlog调用,此时author仍处于游离状态,在session关闭以后再调用showBlog,hibernate会再次试图从数据库中取author,就会发生错误。不知道我这样解释你明白了没有
      

  6.   

    终于懂了。感谢大家哈!关键就是lazy的设置是不是啊!