现在在用ssh做一个小项目..遇到了一点问题.就是
现在有两张表,a和b,关系是一对多...A(一)B(多)
javabean里,a类有一个属性就是private set b=new HashSet(0);
b类里有一个属性是private A a;
现在当lazy="true"的情况下...去查找a表.并使用a类的b属性,是肯定会报错的.
于是我用了第二种办法就是,先查A表,放入aList里..然后再遍历aList,根据每个aList的id字段去查找B表..放入bList里
然后aList.getB().add(bLIst);
程序还是会报这个错
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role
求解啊...
--------------------------------
郁闷的是,就算把延迟加载开了..一样也会报一些乱七八遭的错

解决方案 »

  1.   

    把对应一对多的那个列lazy=true改为lazy=false吧
      

  2.   


    在 XXXtoMany 里的属性 lazy="true"
      

  3.   

       你先查找的是a表~~~那么就在a表的hbm.xml文件中找到对应b表的节点、lazy="false"!
       其实是你的程序整合了Spring、才会用到lazy属性。如果只用Hibenate是不用添加这个属性的!
      

  4.   

    楼上的各位..
    是这样的..
    我有分别试过在<class>节点和<set>节点把lazy写成false..但是同样还是会报错,,在class上写lazy=false时的错误说的是,B集合不能初始化,,在set上写lazy=false..报的错就是这个org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role
    ----------
    我并不想把lazy写成"false",因为这样会降低系统的性能,所以才想着去手动的查询两张表,然后再把B表往A表里添值.....