Ожидаемый путь для соединения Ошибка для указанного c запроса HQL (Hibernate) - PullRequest
0 голосов
/ 15 января 2020

Я получаю следующую ошибку для запроса HQL.

Я вижу правильный путь, я не понимаю, чего здесь не хватает.

Не могли бы вы помочь?

Причина: org.hibernate.hql.internal.ast.QuerySyntaxException: Путь, ожидаемый для соединения! [ВЫБЕРИТЕ ОТЛИЧИЕ ОТ КОММЕНТАРИИ com.mandatum.epeli.model.domain.GroupCoverPeriod rt ВНУТРЕННЕЕ ВСТУПЛЕНИЕ rt.pensionGroup EL LEFT ПРИСОЕДИНЯЙТЕСЬ к rt.insuranceCoverInfos ici СЛЕДУЕТ ПРИСОЕДИНЯТЬСЯ К ОБЪЕДИНЕННОМУ ИСПОЛЬЗОВАНИЮ СИСТЕМЫ ДЛЯ ОБЕСПЕЧЕНИЯ ИСПОЛЬЗОВАНИЯ ИСПОЛЬЗОВАНИЯ ИСПОЛЬЗОВАНИЯ ИСПОЛЬЗОВАНИЯ ИСПОЛЬЗОВАНИЯ В ОБЛАСТИ ИСПОЛЬЗОВАНИЯ ИСПОЛЬЗОВАНИЯ ИСПОЛЬЗОВАНИЯ СИСТЕМЫ ДЛЯ ОБЕСПЕЧЕНИЯ ДОСТИЖЕНИЯ ИСПОЛЬЗОВАНИЯ В ОБЛАСТИ ИСПОЛЬЗОВАНИЯ СИСТЕМЫ ИСПОЛЬЗОВАНИЯ tth ГДЕ el.id =? 1 AND rt.startDate <=? 2 AND (rt.endDate равен NULL ИЛИ rt.endDate> =? 2) И UPPER (e.benefitsId) = UPPER (? 3)] в org.hibernate .hql.internal.ast.QuerySyntaxException.convert (QuerySyntaxException. java: 74) в org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException (ErrorCounter. java: 91) в org.hibernate

@Query(value =
        "SELECT DISTINCT rt FROM GroupCoverPeriod rt " +
                "INNER JOIN rt.pensionGroup el " +
                "LEFT JOIN rt.insuranceCoverInfos ici "+
                "LEFT JOIN rt.insuranceCoverInfoFuneralGrants tth "+
                "INNER JOIN benefitChunks e ON e.insuranceCoverInfoId = tt " +
                "OR e.insuranceCoverInfoFGId = tth " +
                "WHERE el.id = ?1 " +
                "AND rt.startDate <= ?2 " +
                "AND (rt.endDate IS NULL OR rt.endDate >= ?2) " +
                "AND UPPER(el.benefitsId) = UPPER(?3)")
List<GroupCoverPeriod> findByActivePeriodAndInsuranceCoverInfo(long groupId,
                                                               LocalDate periodStartDate,
                                                               String benefitsId);

Подробности сущностей следующие

enter image description here

1 Ответ

1 голос
/ 15 января 2020
"INNER JOIN benefitChunks e ON e.insuranceCoverInfoId = tt " +
            "OR e.insuranceCoverInfoFGId = tth " + 

после внутреннего соединения он ожидает один из пути / поля существующего / предыдущего упомянутого объекта. Поле не является вновь упомянутым объектом "выгодыChunks e"

...