外键连接的对象若没使用,则为代理状态,在页面上显示会出现懒加载异常
那么,如何解决懒加载呢?有以下几种方法
1)查询时将所关联的对象都查出来,利用fetch关键字
例:String hql = "from Employee e left outer join fetch e.department";
2)查询到基对象后将关联的对象均初始化
例:String hql = "from Employee";
List<Employee> list = getSession().createQuery(hql).list();
for(Employee li:list){
li.getDepartment().getDepartmentName();//调用其方法使其初始化
}
return list;
3)在映射文件里外键类上的lazy设为false
<many-to-one name="department" class="Department" column="_departmentId" lazy=false/>//效率低下,不推荐使用
4)使用openSessionInViewFilter:直到页面加载完了再关session