hibernate使用摘要(many-to-many N+1问题)

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_ 
        )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值