Я использую Hibernate 6.6.29.Final и Spring Boot 3.5.6
Я хочу получить запрос типа
(
SELECT LISTAGG(la.case_number, '; ') WITHIN GROUP (ORDER BY la.case_number) AS case_number
FROM (
SELECT DISTINCT la.case_number
FROM law_act_bg la
LEFT JOIN law_act_bg_responsible lr ON lr.r_act_id = la.id AND NVL(lr.flag_no_work, 0) = 0
LEFT JOIN corp_users cu ON cu.cu_cu_id = lr.r_user_id
LEFT JOIN dict d11 ON d11.parent_id = 11 AND d11.code = la.status
WHERE la.r_card_bg_id = lc.id
AND NVL(la.status, 0) 15
AND la.case_number IS NOT NULL
) la
) AS case_number
FROM
law_card_bg lc
но когда я добавляю условие
cb.equal(laCaseInner.get(LawActBgEntity_.rCardBgId), root.get(LawCardBgEntity_.id)),
Я получаю сообщение об ошибке
Не удалось найти TableGroup -entity.LawCardBgEntity(103)
пожалуйста, расскажите мне, как это исправить или есть ли альтернативы для выполнения такого запроса.
полный код
JpaRoot laCaseInner = sqCaseNumberInner.from(LawActBgEntity.class);
sqCaseNumberInner.multiselect(laCaseInner.get(LawActBgEntity_.caseNumber).alias("case_number"))
.where(cb.and(
cb.equal(laCaseInner.get(LawActBgEntity_.rCardBgId), root.get(LawCardBgEntity_.id)),
cb.notEqual(cb.coalesce(laCaseInner.get(LawActBgEntity_.statusCode), cb.literal(0L)), cb.literal(15L)),
cb.isNotNull(laCaseInner.get(LawActBgEntity_.caseNumber))
)).distinct(true);
JpaSubQuery sqCaseNumber = cq.subquery(String.class);
JpaDerivedRoot rootCaseNumber = sqCaseNumber.from(sqCaseNumberInner);
sqCaseNumber.select(cb.listagg(cb.asc(rootCaseNumber), rootCaseNumber.get("case_number"), "; "));
subquery.multiselect(
sqCaseNumber.getSelection().alias("case_number"),
…)
Подробнее здесь: https://stackoverflow.com/questions/798 ... subqueries