1 hibernate的N+1问题
1.1 表1配置
@ManyToMany(mappedBy = "departments", fetch = FetchType.EAGER) @Fetch(FetchMode.SUBSELECT)
1.2 表2配置
@ManyToMany(fetch = FetchType.EAGER) @Fetch(FetchMode.SUBSELECT)
注意 Fetch需要使用subselect。 不能使用其它Join或者select。
subselect使用后,转换的类似语句为:
select
employees0_.departmentId as departme2_0_1_,
employees0_.employeeId as employee1_2_1_,
qyhemploye1_.id as id1_1_0_,
qyhemploye1_.account as account2_1_0_,
qyhemploye1_.gender as gender3_1_0_,
qyhemploye1_.mail as mail4_1_0_,
qyhemploye1_.name as name5_1_0_,
qyhemploye1_.position as position6_1_0_,
qyhemploye1_.telephone as telephon7_1_0_,
qyhemploye1_.wxHao as wxHao8_1_0_
from
qyh_employee_department employees0_
inner join
qyh_employee qyhemploye1_
on employees0_.employeeId=qyhemploye1_.id
where
employees0_.departmentId in (
select
qyhdepartm0_.id
from
qyh_department qyhdepartm0_
)