@JoinTable级别的JPA规范过滤器联接

时间:2020-07-10 09:08:43

标签: spring jpa

我想加入不需要的数据

objectA
    @ManyToMany
    @JoinTable(name = "A_to_B", 
        joinColumns = { @JoinColumn(name = "A_id")}, 
        inverseJoinColumns = {@JoinColumn(name = "B_id")}
        )
    Collection<B> objectsB
    
objectB
    long id


SetJoin<A, B> bObjects = root.join(A_.objectsB, JoinType.LEFT);

bObjects.on(builder.equal(bObjects.get(B_.id), 100));

规范生成下一个联接

select * from  A a
         left join A_to_B ab on a.id = ab.a_id
         left join B b on b.id = ab.b_id and b.id = 100
         

但是我想通过解释计划将下一个变种提高约15倍

select * from  A a
         left join A_to_B ab on a.id = ab.a_id and b_id = 100
         left join B b on b.id = ab.b_id 

0 个答案:

没有答案