Я хочу выполнить соединение без ненужных данных
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