3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
我在使用 spring 存儲(chǔ)庫(kù)做教程時(shí)遇到了這個(gè)錯(cuò)誤。原來(lái)錯(cuò)誤是在為我的實(shí)體構(gòu)建服務(wù)類(lèi)的階段發(fā)生的。
在您的 serviceImpl 類(lèi)中,您可能有以下內(nèi)容:
@Override
public YourEntityClass findYourEntityClassById(Long id) {
return YourEntityClassRepositorie.getOne(id);
}
將此更改為:
@Override
public YourEntityClass findYourEntityClassById(Long id) {
return YourEntityClassRepositorie.findById(id).get();
}
基本上 getOne 是一個(gè)延遲加載操作。因此,您只能獲得對(duì)實(shí)體的引用(代理)。這意味著實(shí)際上沒(méi)有進(jìn)行數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)。只有當(dāng)你調(diào)用它的屬性時(shí),它才會(huì)查詢(xún)數(shù)據(jù)庫(kù)。findByID 在您調(diào)用它時(shí)會(huì)“急切地”/立即調(diào)用它,因此您已經(jīng)完全填充了實(shí)際的實(shí)體。
添加回答
舉報(bào)