Не передаются параметры метода репозитория в запрос @Query
В чем проблема: Есть следующий репозиторий:
@Repository
public interface StoriesGroupRepository extends JpaRepository<StoriesGroup, Long> {
@Query(
value = "SELECT * FROM stories_group " +
"JOIN group_browsing_history " +
"ON group_browsing_history.group_id = stories_group.stories_group_id " +
"JOIN customers " +
"ON customers.customer_id = group_browsing_history.customer_id " +
"where stories_group.is_active = :isActive and customers.external_id = :externalId",
nativeQuery = true
)
public List<StoriesGroup> getWatchedStoriesBy(@Param("isActive") boolean isActive,
@Param("externalId") String externalId);
}
Метод getWatchedStoriesBy возвращает пустой список при абсолютно любых параметрах, даже в тех случаях, когда для указанных параметров есть данные в БД.
Мои настройки (файл application.properties):
logging.config=classpath:log/logback.xml
server.port=8080
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:postgresql://localhost:5432/Stories
spring.datasource.username=postgres
spring.datasource.password=my_password;
spring.datasource.initialization-mode=always
spring.datasource.continue-on-error=true
spring.jpa.show-sql=true
Как я пытался решить проблему:
сперва я протестировал сам запрос в БД через pgAdmin. Запрос корректно отрабатывал для всех тестовых данных.
Далее я проверил код, который вызывает getWatchedStoriesBy - во всех случаях код корректно передавал параметры этому методу.
Потом я попробовал убрать параметры у метода getWatchedStoriesBy, а вместо :isActive и :externalId подставил конкретные значения для которых есть данные в БД. И метод корректно отработал.
Затем я вернул параметры на место и проверил как выглядит sql запрос переданный Hibernet (установив spring.jpa.show-sql=true) и увидел следующее
SELECT * FROM stories_group JOIN group_browsing_history ON group_browsing_history.group_id = stories_group.stories_group_id JOIN customers ON customers.customer_id = group_browsing_history.customer_id where stories_group.is_active = ? and customers.external_id = ?
и если я правильно понимаю, то знаки вопроса показывают, что значение параметров отмеченных @Param не передалось методу. А почему - не имею ни малейшего понятия. При всем при этом не возникает никаких исключений.
Вопрос: почему параметры метода getWatchedStoriesBy не попадают в итоговый sql запрос? Как это починить?