【发布时间】:2017-11-13 15:56:06
【问题描述】:
我有这样的 Spring Data 方法:
List<RegionBasics> findTop10ByRegionMappingsActiveTrue();
我期望它会在一个查询中从 db 中找到前 10 条记录,但我在日志中看到的是(我没有粘贴整个日志以保持可读性,但这个选择查询被调用了 10 次):
选择 regionmapp0_.id 作为 id1_2_1_, regionmapp0_.is_active 作为 is_activ2_2_1_, regionmapp0_.region_basic_id 作为 region_b3_2_1_, regionbasi1_.id 作为 id1_1_0_, regionbasi1_.hotel_count 作为 hotel_co2_1_0_, regionbasi1_.name_long 作为 name_lon3_1_0_, regionbasi1_. 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=?
如何确保此方法只命中 db 一次(而不是 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;
}
【问题讨论】:
标签: java sql performance spring-data