【发布时间】:2020-09-22 16:17:05
【问题描述】:
我面临多个选择查询 (N+1) 到 JOIN.ON 条件。这是我的例子
这是我在 Person 实体中的映射
@ManyToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumns({
@JoinColumn(name = "vehicleId", referencedColumnName = "vehicleId")
})
@WhereJoinTable( clause = "vehicle_color = 'RED' " ) - I did try this annotation but dont see conditional join in hibernate generated query
private Vehicle vehicle;
所以我尝试使用 CriteriaBuilder
Join<Person, Car> vehicleJoin = personJoin.join("vehicle", JoinType.LEFT);
vehicleJoin.on(criteriaBuilder.isNotNull(personJoin.get(" vehicle_color = 'RED' ")))
一旦我添加了 vehicleJoin.on 条件,我确实看到它已正确连接,但它正在为该人的每辆汽车执行一个选择查询
我想避免多次选择并获取所有车辆数据作为主查询的一部分
这是在我的项目中使用的 jars
spring-boot-starter-data-jpa 2.1.6
休眠核心 5.3.10
提前感谢您的意见。希望它更容易阅读和理解:D
【问题讨论】: