2016-10-26 3 views
2

В веб-проекте, используя Spring-data (1.10.4.RELEASE) с базой данных Oracle, я пытаюсь использовать собственный запрос с переменной Sort.Spring Data and Native Query with Sorting

public interface UserRepository extends JpaRepository<User, Long> { 
    @Query(nativeQuery = true,value = "SELECT * FROM USERS WHERE LASTNAME = :lastname #sort") 
    List<User> findByLastname(@Param("lastname") String lastname, Sort sort); 
} 

Запрос запущен является:

SELECT * FROM USERS WHERE LASTNAME = 'Lorite' #sort ORDER BY LASTNAME 

Как вы можете увидеть аннотаций "#sort" все еще там.

Я пробовал Spring Data and Native Query with pagination, но аннотация там еще есть и с использованием другого синтаксиса вроде? # {# Sort} или {#sort} проблема сохраняется.

Все, что угодно.

Спасибо!

+1

Есть причина, почему вы используете родной запрос здесь? Spring Data JPA может сделать все это автоматически для вас, не требуется собственный запрос (или даже запрос JPA). – Jesper

+0

Я знаю, но запрос сложнее, это только пример, и единственный способ - использовать собственный запрос. Спасибо, в любом случае. – Dlorite

ответ

1

В документации сказано:

Обратите внимание, что мы в настоящее время не поддерживают выполнение динамической сортировки для родных запросов, как мы должны были бы манипулировать фактический запрос объявлен, и мы не можем сделать это надежно для нативного SQL ,

Кроме того, эта #sort интерполяция не существует

[1] http://docs.spring.io/spring-data/jpa/docs/current/reference/html/

+0

В соответствии с этим http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.at-query вы можете использовать собственный запрос и использовать сортировку, подобную этой парни http://stackoverflow.com/questions/38349930/spring-data-and-native-query-with-pagination говорят. – Dlorite