Hibernate查询的结果集对象其实是一个代理对象(可以使用getClass()验证)。
在session调用close()方法前,该对象是持久化状态的,是受session管理的,当开启懒加载后,当我们要访问该查询对象的某个懒加载对象属性时,session会帮我们去查询,当我们的对象离开session的托管时,那个懒加载的对象属性就为空了。
一般解决思路:使用DTO对象作为传输对象,即不把entity对象传出DAO层,不要让它离开session的托管,传出去的是经过装配的DTO对象!!!
Hibernate查询的结果集对象其实是一个代理对象(可以使用getClass()验证)。
在session调用close()方法前,该对象是持久化状态的,是受session管理的,当开启懒加载后,当我们要访问该查询对象的某个懒加载对象属性时,session会帮我们去查询,当我们的对象离开session的托管时,那个懒加载的对象属性就为空了。
一般解决思路:使用DTO对象作为传输对象,即不把entity对象传出DAO层,不要让它离开session的托管,传出去的是经过装配的DTO对象!!!