2017-06-12 38 views
3

我有春天數據的方法是這樣的:春數據findTop10-十大查詢,而不是一個

List<RegionBasics> findTop10ByRegionMappingsActiveTrue(); 

我想到的是,它會在一個查詢發現排名前10位的記錄從數據庫中,但我在日誌中看到的是(我沒貼原木爲了保持這種可讀但這選擇查詢調用10次):

選擇regionmapp0_.id爲id1_2_1_,regionmapp0_.is_active爲is_activ2_2_1_,regionmapp0_.region_basic_id爲region_b3_2_1_,regionbasi1_ .id as id1_1_0_,regionbasi1_hotel_count as hotel_co2_1_0_,regionbasi1_.name_long as name_lon3_1_0_, regionbasi1_.name as name4_1_0_,regionbasi1_.type as type5_1_0_ from region_mappings regionmapp0_ left outer join region_basics regionbasi1_ on regionmapp0_.region_basic_id = regionbasi1_.id where regionmapp0_.region_basic_id =?

我怎樣才能確保這個方法只會打一次數據庫一次(而不是10次)?

我的模型:

@Data 
@NoArgsConstructor 
@Entity 
@Table(name = "region_basics") 
public class RegionBasics { 

    @Id 
    Integer id; 

    @Column 
    String type; 

    @Column 
    String name; 

    @Column(name = "name_long") 
    String longName; 

    @Column(name = "hotel_count") 
    Integer hotelCount; 

    @OneToOne(mappedBy="regionBasics") 
    RegionMappings regionMappings; 
} 

回答

0

我想你應該聯合取的RegionMappings: 喜歡這個:@Query("SELECT rb FROM RegionBasics r JOIN FETCH r.regionMappings rm WHERE rm.active=true") 隨着分頁參數new PageRequest(0,10)