2 回答

TA贡献1911条经验 获得超7个赞
我会推荐以下方法之一:
1)在您的存储库方法findProjectEmployeesWithinDates中,您可以执行
for (ProjectEmployee pe : listProjectEmployees)
{
pe.getEmployee().getPerson();
}
所以它会在会话打开时初始化对象
2)您可以使用查询获取数据
SELECT * FROM ProjectEmployee pe JOIN FETCH pe.employee e JOIN FETCH e.person
这样,Hibernates 将自动使用员工和人员对象填充执行结果

TA贡献1812条经验 获得超5个赞
当您调用 projectEmployeeRepository.findProjectEmployeesWithinDates 方法时,它会返回 List。此时您的休眠会话已经关闭。
因此,当读取 ProjectEmployee 对象时,您只能访问那些特定于对象的变量而不是特定于对象的子对象,因为您正在为子对象使用延迟初始化。
因此,解决方法是保持您的休眠会话打开或使用急切获取或使用包装类对象将值从 ProjectEmployee 类传输到 projectEmployeeRepository.findProjectEmployeesWithinDates 方法中的 ProjectEmployeeWrapper,然后返回 ProjectEmployeeWrapper 对象的列表
添加回答
举报