hibernate用get方法怎么也懒加载异常呢?情况是这样
device类中有个product类 他们的关系是多对一 ,many to one 这里没有显示的写上lazy属性(默认是proxy吧?),不过many-to-one这里确定要懒加载的而现在我想通过get方法得到device对象,在得到product,hibernate为什么会报懒加载异常呢?不是说get不会看懒加载么?

解决方案 »

  1.   

    同意楼上的。。
    lazy 的问题
      

  2.   

    不同意楼上  lazy默认就是true,把lazy设为false
      

  3.   

    get方法只会帮你把device查出来,product是一个代理,在session关闭之前如果你调用了product对象中除了主键和getClass()之外的属性,hibernate才会帮你把product对象查出来。
    如果你想把product对象查出来,可以改映射文件也就是楼上所有的lazy=true,但是不建议这样做。你可以在session关闭之前去初始化product这个代理(Hibernate.initialize(device.getProduct())),或者用hql语句查询。
      

  4.   


    我试过getdevice后马上(sesion没关闭)去调用getproduct.getName()方法,可我奇怪的是还会抛异常,hql是没问题它会把product给拿出来, form device where device.id=?,但我总不能一遇到这种情况就写hql吧,况且该类中已有个getDeviceByID这个方法,我在写个hql的似乎不太好 
      

  5.   

    兄弟们啊,manytoone这一方的lazy只有false、proxy、和no-proxy,没有true