2 回答

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
我會(huì)推薦以下方法之一:
1)在您的存儲(chǔ)庫方法findProjectEmployeesWithinDates中,您可以執(zhí)行
for (ProjectEmployee pe : listProjectEmployees)
{
pe.getEmployee().getPerson();
}
所以它會(huì)在會(huì)話打開時(shí)初始化對(duì)象
2)您可以使用查詢獲取數(shù)據(jù)
SELECT * FROM ProjectEmployee pe JOIN FETCH pe.employee e JOIN FETCH e.person
這樣,Hibernates 將自動(dòng)使用員工和人員對(duì)象填充執(zhí)行結(jié)果

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
當(dāng)您調(diào)用 projectEmployeeRepository.findProjectEmployeesWithinDates 方法時(shí),它會(huì)返回 List。此時(shí)您的休眠會(huì)話已經(jīng)關(guān)閉。
因此,當(dāng)讀取 ProjectEmployee 對(duì)象時(shí),您只能訪問那些特定于對(duì)象的變量而不是特定于對(duì)象的子對(duì)象,因?yàn)槟跒樽訉?duì)象使用延遲初始化。
因此,解決方法是保持您的休眠會(huì)話打開或使用急切獲取或使用包裝類對(duì)象將值從 ProjectEmployee 類傳輸?shù)?projectEmployeeRepository.findProjectEmployeesWithinDates 方法中的 ProjectEmployeeWrapper,然后返回 ProjectEmployeeWrapper 對(duì)象的列表
添加回答
舉報(bào)