2017-09-16 80 views
0

假設我有Foo實體,其中一個字段用@ManyToOne(fetch = FetchType.LAZY)註解。通常這個字段不是必需的,但在某些查詢中,我們需要包含所有相關實體的所有元素。我不想逐個查詢數據庫以獲取關聯的實體(n + 1選擇問題)。有沒有什麼辦法可以指定fetchType?喜歡的東西:Spring Jpa:更改實體的FetchType

@Repository 
public interface FooRepository extends CrudRepository <Foo, String> { 
    List<Foo> findAll(FetchType fetchType); 
} 

回答

1
@OneToMany(fetch = FetchType.LAZY) 
List<Address> address; 

比方說,你有上面的代碼。 你能避免N + 1層的問題,如果你這樣做address.size()

getAdress().size() 

使Hibernate會由一個加載的所有元素在一次而不是裝載之一。

+0

但是'@ ManyToOne'沒有'List'類型,你用'@ OneToMany'把它搞糊塗了 – ipoteka