Мы столкнулись с проблемой при использовании критериев в Hibernate 6 и базе данных Oracle. В связи с тем, что запрос содержит поля одного и того же имени в разных таблицах, запрос без явных псевдонимов для полей возвращает ошибку на стороне Oracle < /p>
ORA-00918: column ambiguously defined
< /code>
Было невозможно явно добавить псевдонимы к сгенерированному сгибанному запросу SQL таким образом < /p>
query.multiselect(
from.get("id"),
group.get("name").alias("gk"),
group.get("id"),
branch.get("name").alias("branch"),
gsz.get("name").alias("gsz")
);
< /code>
Из журналов ясно, что Hibernate генерирует следующий запрос < /p>
Hibernate:
select
ro1_0."ORGID",
g1_0."NAME",
o1_0."X_GK_ID",
rb1_0."NAME",
lt1_0.”NAME”
< /code>
Но база данных Oracle требует явных псевдонимов для успешного выполнения запроса, то есть нам нужно получить сгенерированный запрос, подобный этому < /p>
Hibernate:
select
ro1_0."ORGID",
g1_0."NAME" AS gk,
o1_0."X_GK_ID",
rb1_0."NAME" AS branch,
lt1_0.”NAME” AS gsz
< /code>
Насколько я мог выяснить, в Hibernate 6 псевдонимы были удалены из сгенерированного запроса для целей оптимизации, было невозможно найти решение о том, как ясно сообщить Hibernate для создания запроса SQL с псевдонимами для полей в списке, возможно, кто -то может предположить, что есть какие -либо имеющиеся решения, чтобы решить эту задачу? MultiSelect, выборы со псевдонимом, плазко-пробег-интеграция-гибернат
Подробнее здесь: https://stackoverflow.com/questions/797 ... e-criteria