Использование именованного параметра в собственном запросе SQL с Spring Data JPA - PullRequest
0 голосов
/ 19 сентября 2019

Был задан следующий запрос для запуска базы данных DB2, однако в моем приложении Spring Boot возвращается ошибка ниже.

Я исследовал, что :COL_1_1001 должен быть своего рода именованным параметром или переменной хоста (DB2), но не смог найти аналогичный пример того, что я пытаюсь сделать.Я только когда-либо использовал ?1 для установки параметра с помощью @Query, который, как я понимаю, для JPQL.Так как я пытаюсь выполнить собственный запрос SQL здесь, не уверен, что это должно работать.

@Repository 
public interface SomeRepository extends JpaRepository<Entity, EntityID> {

@Query(value="SELECT COL_1"
              + ",COL_2"
              + ",COL_3"
              + "FROM TABLE_A"
              + "WHERE COL_1 = :COL_1_1001", nativeQuery = true)
List<Entity> getEntityDetails();
}

[ОШИБКА] ~ 2019-09-19-07.26.30.347CDT ~~~~~ oaccC [. [. [. [DispatcherServlet] Servlet.service () для сервлета [dispatcherServlet] в контексте с путем [] выдало исключение [Ошибка обработки запроса;Вложенное исключение: org.springframework.dao.InvalidDataAccessResourceUsageException: Именованный параметр не привязан: COL;вложенным исключением является org.hibernate.QueryException: именованный параметр не связан: COL] с первопричиной org.hibernate.QueryException: именованный параметр не связан: COL

1 Ответ

1 голос
/ 19 сентября 2019

Вы используете переменную COL_1_1001 в своем запросе, но не предоставляете ее.Вы должны добавить аргумент, помеченный @Param, чтобы значение могло быть введено в запрос.

Изменить:

@Query(value="SELECT COL_1"
              + ",COL_2"
              + ",COL_3"
              + "FROM TABLE_A"
              + "WHERE COL_1 = :COL_1_1001", nativeQuery = true)
List<Entity> getEntityDetails();

на:

@Query(value="SELECT COL_1"
              + ",COL_2"
              + ",COL_3"
              + "FROM TABLE_A"
              + "WHERE COL_1 = :col", nativeQuery = true)
List<Entity> getEntityDetails(@Param("col") String col); // it may not be a string - use the actual tyle of COL_1

Для получения дополнительной информации см. Документация Spring Data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...