- 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
- #1
Сабж.
Есть табличка вида (id, name).
Есть задача сделать джойн таблицы с самой собой:
select a.id mmm, b.id sss, a.name from MyTable a join MyTable b on (a.id<>b.id)
(понятно что реальная задача гораздо сложнее)
Мускуль выполняет такой запрос отлично.
А вот сабж... Засовываю ему вышеприведенный запрос в createNativeSQL и делаю getResultList().
Запрос физически выполняется - видно по монитору мускуля. А вот на этапе выковыривания гибернейтом данных пишет "Column 'id' not found". То есть гибернейт не вкуривает алиасы колонок.
Если я делаю выборку колонки id без алиасов:
select a.id, b.id, a.name from MyTable a join MyTable b on (a.id<>b.id)
то ошибка не выдается. Однако в результатах в нулевом и первом по счету объектах строки (куда должны загрузиться данные первой и второй по счету колонок резалтсета) оказывается значение ПЕРВОЙ колонки. Это кагбе объяснимо - выковыривание идет по имени колонки. Однако нахер мне не нужно.
Внимание вопрос: как сделать так, чтобы и запрос выполнялся и результаты правильно грузились?
ЗЫЖ Вариант вложенных селектов не предлагать - там огромные объемы данных...
ЗЗЫЖ Ненавижу эти фреймворки
Всем спасибо, вопрос решился при помощи НЁХ под названием @SqlResultSetMapping
ЗЫЖ Не один я в Инете матерно ругаюсь на гениальные решения по выковыриванию колонок по мета-данным ДжДБЦ вместо реальных имен колонок из резалтсета.
ЗЗЫЖ И вообще какого хера по имени, а не позиционно?
Есть табличка вида (id, name).
Есть задача сделать джойн таблицы с самой собой:
select a.id mmm, b.id sss, a.name from MyTable a join MyTable b on (a.id<>b.id)
(понятно что реальная задача гораздо сложнее)
Мускуль выполняет такой запрос отлично.
А вот сабж... Засовываю ему вышеприведенный запрос в createNativeSQL и делаю getResultList().
Запрос физически выполняется - видно по монитору мускуля. А вот на этапе выковыривания гибернейтом данных пишет "Column 'id' not found". То есть гибернейт не вкуривает алиасы колонок.
Если я делаю выборку колонки id без алиасов:
select a.id, b.id, a.name from MyTable a join MyTable b on (a.id<>b.id)
то ошибка не выдается. Однако в результатах в нулевом и первом по счету объектах строки (куда должны загрузиться данные первой и второй по счету колонок резалтсета) оказывается значение ПЕРВОЙ колонки. Это кагбе объяснимо - выковыривание идет по имени колонки. Однако нахер мне не нужно.
Внимание вопрос: как сделать так, чтобы и запрос выполнялся и результаты правильно грузились?
ЗЫЖ Вариант вложенных селектов не предлагать - там огромные объемы данных...
ЗЗЫЖ Ненавижу эти фреймворки

Всем спасибо, вопрос решился при помощи НЁХ под названием @SqlResultSetMapping
ЗЫЖ Не один я в Инете матерно ругаюсь на гениальные решения по выковыриванию колонок по мета-данным ДжДБЦ вместо реальных имен колонок из резалтсета.
ЗЗЫЖ И вообще какого хера по имени, а не позиционно?
Останнє редагування: