Некорректное формирование sql запроса в dataManager при использовании LogicalCondition

Добрый день. При миграции с версии 1.1.3 на 2.7.4. столкнулся с изменение поведения в работе dataManager, мало того что один и тот же код стал формировать другой sql запрос, так ещё и сам запрос формируется заведомо без возвращаемых значений.

Пример:

    private Map<LocalDate, DepartmentExamination> getDepartmentExaminations(CalendarPeriodDto calendarPeriod) {
        return dataManager.load(DepartmentExamination.class)
                .condition(LogicalCondition.and(
                        PropertyCondition.equal("examination", calendarPeriod.getExamination()),
                        PropertyCondition.equal("examinationUnit", calendarPeriod.getExaminationUnit()),
                        PropertyCondition.greaterOrEqual("date", calendarPeriod.getStartDate()),
                        PropertyCondition.lessOrEqual("date", calendarPeriod.getEndDate())
                ))
                .fetchPlan("departmentExamination-full-fetch-plan")
                .list().stream()
                .collect(Collectors.toMap(DepartmentExamination::getDate, Functions.identity(),
                        (o1, o2) -> Integer.compare(o1.getNumber(), o2.getNumber()) == -1 ? o2 : o1));
    }

При передаче параметров где calendarPeriod.getExaminationUnit() = null , приводит к формированию следующего sql запроса:

SELECT t1.ID, t1.CREATED_BY, t1.CREATED_DATE, t1.DATE_, t1.DELETED_BY, t1.DELETED_DATE, t1.DEPARTMENT, t1.II_NUMBER, t1.LAST_MODIFIED_BY, t1.LAST_MODIFIED_DATE, t1.MAIN_DEPARTMENT, t1.NUMBER, 
t1.ORGANIZATION, t1.VERSION, t1.EXAMINATION_ID, t1.EXAMINATION_UNIT_ID, t0.ID, t0.CREATED_BY, t0.CREATED_DATE, t0.DELETED_BY, t0.DELETED_DATE, t0.DESCRIPTION, t0.LAST_MODIFIED_BY, t0.LAST_MODIFIED_DATE, 
t0.NAME, t0.SHORT_NAME, t0.VERSION, t0.PERIODICITY_ID, t2.ID, t2.CREATED_BY, t2.CREATED_DATE, t2.DELETED_BY, t2.DELETED_DATE, t2.DESCRIPTION, t2.LAST_MODIFIED_BY, t2.LAST_MODIFIED_DATE, t2.NAME, t2.SHORT_NAME,
 t2.VERSION 
 FROM MED_EXAMINATION t0, MED_EXAMINATION_UNIT t2, MED_DEPARTMENT_EXAMINATION t1 
 WHERE (((((((t1.EXAMINATION_ID = ?) AND (t1.EXAMINATION_UNIT_ID IS NULL)) AND (t1.DATE_ >= ?)) AND (t1.DATE_ <= ?)) AND ((((t1.MAIN_DEPARTMENT = ?) OR (t1.MAIN_DEPARTMENT IN (?))) OR (t1.MAIN_DEPARTMENT = ?)) 
 AND (t1.ORGANIZATION = ?))) AND (t1.DELETED_DATE IS NULL)) AND (((t0.ID = t1.EXAMINATION_ID) AND (t0.DELETED_DATE IS NULL)) AND ((t2.ID = t1.EXAMINATION_UNIT_ID) AND (t2.DELETED_DATE IS NULL))))
	bind => [019c55d4-3869-789d-9b39-5605214fed1a, 2026-02-14, 2026-02-14, D010, D020, ALL, Y001]

Если посмотреть внимательно в запросе два противоречащих друг другу условия:

t1.EXAMINATION_UNIT_ID IS NULL
t2.ID = t1.EXAMINATION_UNIT_ID

Запрос не возвращает никаких данных.

Тот же самый код в jmix 1.1.3 выдаёт следующий запрос:

SELECT t1.ID, t1.CREATED_BY, t1.CREATED_DATE, t1.DATE_, t1.DELETED_BY, t1.DELETED_DATE, t1.DEPARTMENT, t1.II_NUMBER, t1.LAST_MODIFIED_BY, t1.LAST_MODIFIED_DATE, t1.MAIN_DEPARTMENT, t1.NUMBER, 
t1.ORGANIZATION, t1.VERSION, t1.EXAMINATION_ID, t1.EXAMINATION_UNIT_ID, t0.ID, t0.CREATED_BY, t0.CREATED_DATE, t0.DELETED_BY, t0.DELETED_DATE, t0.DESCRIPTION, t0.LAST_MODIFIED_BY, t0.LAST_MODIFIED_DATE,
 t0.NAME, t0.SHORT_NAME, t0.VERSION, t0.PERIODICITY_ID, t2.ID, t2.CREATED_BY, t2.CREATED_DATE, t2.DELETED_BY, t2.DELETED_DATE, t2.DESCRIPTION, t2.LAST_MODIFIED_BY, t2.LAST_MODIFIED_DATE, t2.NAME, t2.SHORT_NAME,
 t2.VERSION FROM MED_DEPARTMENT_EXAMINATION t1 LEFT OUTER JOIN MED_EXAMINATION_UNIT t2 ON (t2.ID = t1.EXAMINATION_UNIT_ID), MED_EXAMINATION t0 
 WHERE ((((((t1.EXAMINATION_ID = ?) AND (t1.DATE_ >= ?)) AND (t1.DATE_ <= ?)) AND ((((t1.MAIN_DEPARTMENT = ?) OR (t1.MAIN_DEPARTMENT IN (?))) OR (t1.MAIN_DEPARTMENT = ?)) AND (t1.ORGANIZATION = ?))) AND (t1.DELETED_DATE IS NULL)) AND ((t0.ID = t1.EXAMINATION_ID) AND (t0.DELETED_DATE IS NULL)))
bind => [e1a79c45-6e05-8df5-af30-d1f1c0c86d1b, 2026-02-14, 2026-02-14, D010, D020, ALL, Y001]

Данные возвращаются.

@Table(name = "MED_DEPARTMENT_EXAMINATION", indexes = {
        @Index(name = "IDX_MED_DEPARTMENT_EXAMINATION_EXAMINATION", columnList = "EXAMINATION_ID"),
        @Index(name = "IDX_MED_DEPARTMENT_EXAMINATION_EXAMINATION_UNIT", columnList = "EXAMINATION_UNIT_ID"),
        @Index(name = "IDX_MED_DEPARTMENT_EXAMINATION_DEPARTMENT", columnList = "DEPARTMENT"),
        @Index(name = "IDX_MED_DEPARTMENT_EXAMINATION_MAIN_DEPARTMENT", columnList = "MAIN_DEPARTMENT")
}, uniqueConstraints = {
        @UniqueConstraint(name = "IDX_MED_DEPARTMENT_EXAMINATION_UNQ", columnNames = {"DEPARTMENT", "EXAMINATION_ID", "EXAMINATION_UNIT_ID", "DATE_"})
})
@Entity(name = "med_DepartmentExamination")
public class DepartmentExamination extends BaseEntity {
    @JoinColumn(name = "EXAMINATION_ID", nullable = false)
    @NotNull(message = "{msg://ru.digitalatom.medicalexamination.entity/DepartmentExamination.examination.validation.NotNull}")
    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    private Examination examination;

    @JoinColumn(name = "EXAMINATION_UNIT_ID")
    @ManyToOne(fetch = FetchType.LAZY)
    private ExaminationUnit examinationUnit;
...
}
@JmixEntity
@Table(name = "MED_EXAMINATION_UNIT", uniqueConstraints = {
        @UniqueConstraint(name = "IDX_MED_EXAMINATION_UNIT_UNQ", columnNames = {"NAME"}),
        @UniqueConstraint(name = "IDX_MED_EXAMINATION_UNIT_UNQ_1", columnNames = {"SHORT_NAME"})
})
@Entity(name = "med_ExaminationUnit")
public class ExaminationUnit extends BaseNamedDescribedEntity {
    @Column(name = "SHORT_NAME")
    private String shortName;
...
}
@JmixEntity
@Table(name = "MED_EXAMINATION", indexes = {
        @Index(name = "IDX_MED_EXAMINATION_PERIODICITY", columnList = "PERIODICITY_ID")
}, uniqueConstraints = {
        @UniqueConstraint(name = "IDX_MED_EXAMINATION_UNQ", columnNames = {"NAME"}),
        @UniqueConstraint(name = "IDX_MED_EXAMINATION_UNQ_1", columnNames = {"SHORT_NAME"})
})
@Entity(name = "med_Examination")
public class Examination extends BaseNamedDescribedEntity {
    @Column(name = "SHORT_NAME")
    private String shortName;
...
}