При добавлении в фильтр условия Установлен = Да на ссылочное поле объекты начинают выбираться отдельными запросами

Проблема.
При добавлении в фильтр условия Установлен = Да на ссылочное поле, объекты (на которые ссылка) начинают выбираться по одному отдельными SQL запросами, если же в фильтре использовать другой оператор =/<>, то объекты выбираются с помощью JOIN. Причем эффект имеет место только если в fetchPlan для ссылочного поля используется fetch=“AUTO” (умолчание).
Причина, по-видимому, в методе calculateFetchGroup класса FetchGroupManager:

            List<FetchGroupField> isNullFields = joinFields.stream()
                    .filter(f -> f.fetchMode == FetchMode.AUTO &&
                            (parser.hasIsNullCondition(f.path()) || parser.hasIsNotNullCondition(f.path())))
                    .collect(Collectors.toList());

где используется условие hasIsNotNullCondition

Данный код тянется ещё из CUBA. Большое количество кода в классе FetchGroupManager - это фикс для обхода тех или иных багов в EclipseLink. Конкретную проблему, которую конкретно в этом месте решали, сейчас тяжело будет вспомнить.

Добрый день!
Этот код, похоже, не обход проблемы, а попытка оптимизации запроса для случая наличия условия Установлен = Нет - в этом случае join очевидно лишний, но зачем добавлено

 || parser.hasIsNotNullCondition(f.path())

что соответствует условию Установлен = Да - непонятно, ведь join тут явно не мешает.