I have the below mentioned Entity classes, when I execute my application I am getting the following exception. Some of the other similar questions didn\'t solve the problem.
If you would like to continue using FetchType.LAZY
but need access to the lazily loaded attributes for some queries, a portable solution would be to access the field and perform an operation on it while still within a transaction/session. I mention portability because AFAIK Hibernate offers at least one different approach to explicitly trigger loading that is not part of the JPA spec.
Adapting your code, this could look like this:
public List findAllEmployees() {
List employees = getEntityManager().createNamedQuery("Emp.findAllEmployees",
Emp.class).getResultList();
//trigger loading of attributes
for(Emp emp: employees){
emp.getDeptNo().getEmpDetNo().size();
}
return employees;
}
EDIT: Another portable alternative would be to use fetch joins in the query. Your Emp.findAllEmployees
query could look like this:
SELECT e FROM Emp e JOIN FETCH e.dept.empDetno
Make it a left join if you have Emps without departments and departments without empDetNo