У меня есть проект начальной загрузки (в linux) и простая база данных, состоящая из двух объектов - высказываний и тегов. У высказывания может быть несколько тегов, и каждый тег может использоваться для обозначения нескольких высказываний, так что это соотношение между многими. Таблица saying_tags
используется для соединения высказываний и тегов с использованием их идентификаторов.
Когда я пытаюсь выбрать все высказывания, которые имеют точно заданные теги, используя этот запрос, и этот запрос что-то выбирает (результат не пустой), hibernate выдает исключение, говорящее Caused by: java.sql.SQLException: Column 'id' not found.
, но столбец id
даже несуществуют в этом запросе. Когда я пытаюсь выполнить его из терминала или DBeaver, он работает нормально и возвращает мне то, что я ожидаю.
Я даже пытался жестко закодировать запрос с точными параметрами, чтобы убедиться, что режим гибернации ничего не меняет в запросе, и все равно не работает. И я буквально копирую запрос, когда hibernate регистрирует его в консоли, и он отлично работает в терминале.
Это запрос с жестко заданными значениями и метод внутри интерфейса, расширяющего JpaRepository<Saying, Long>
, который его выполняет:
@Query(value="select saying_id from saying_tags group by saying_id having count(distinct case when tags_id in (33) then tags_id else 0 end) = 1 and min(case when tags_id in (33) then tags_id else 0 end) > 0", nativeQuery=true)
public List<Saying> getSayingsContainingExactlyGivenTags();