Присоединение к фильтру спецификации JPA на уровне @JoinTable - PullRequest
0 голосов
/ 10 июля 2020

Я хочу выполнить соединение без ненужных данных

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...