2017-08-14 63 views
0

取實體我有兩個實體:OpenJPA的一個延遲集合

答:

class A { 

@Id 
Long id; 

@OneToMany(fetch = FetchType.LAZY) 
List<B> listOfB; 
} 

和B類:

class B { 

@Id 
Long id; 

@ManyToOne(fetch = FetchType.LAZY) 
A a; 
} 

現在在我的春天數據回購我創建一個查詢如:

@Query("SELECT a FROM A a INNER JOIN a.listOfB b WHERE b.id = :id") 

問題是,執行查詢並返回有的一對象,但是當我要訪問的listOfB我得到一個NullPointerException ...

A a = aRepository.findByOwnQuery(id); 
a.getListOfB().size(); -> NullPointerException 
+0

發佈您的代碼,並張貼了異常的精確和完整的堆棧跟蹤。 –

+0

你需要什麼代碼?有兩個關係標記爲懶惰的實體和一個查詢。 – Bart

+0

導致NPE的代碼。 –

回答

-1

NullPointerException可能是因爲你取你的孩子listOfBLazily在你父母的課A

嘗試JOIN FETCH像這樣

@Query("SELECT a FROM A a JOIN FETCH a.listOfB b WHERE b.id = :id") 
+0

請發送downvote的原因。謝謝 –

+0

有了這樣的建設,我得到'ArgumentException'錯誤'遇到「b」在......但預期:[「,」,「GROUP」,「HAVING」,「INNER」,「JOIN」,「LEFT」 ,「ORDER」,「WHERE」,]'。 – Bart

+0

你確定這個例外是因爲我提出的單一改變。?因爲我的改變並沒有改變論據。它只是改變了孩子的取向策略。請覈對一下。 –