Использование переменной в Spring @Query

#java #spring

#java #spring

Вопрос:

У меня возникла проблема с тем, чтобы заставить мою переменную работать в моем @Query. Ниже приведен код

 @Query("SELECT new User(userId, userEmail, userForename, userSurname, userMiddleName) "
          "FROM User "
          "ORDER BY :orderBy DESC")
public List<User> findAllBy(@Param("orderBy") String orderBy);
  

Я знаю, что переменная, которую я хочу, передается правильно. На данный момент это просто возвращает все результаты, упорядоченные по идентификатору пользователя. Если я жестко закодирую значение, которое передается в эту функцию, то она корректно вернет результаты, упорядоченные userEmail (именно в них и передается). Любые предложения были бы замечательными.

Комментарии:

1. покажите способ, которым вы это называете, чтобы понять, в чем проблема.

2. Ваш способ создания запроса опасен, когда запрос преобразуется, он должен выглядеть так, ORDER BY 'some string' DESC вы обратили внимание на кавычки? это должно вызвать проблемы

Ответ №1:

К сожалению, вы можете передавать параметры только в «условные» предложения (например, «where») из-за базовых ограничений JDBC.

Вместо этого рассмотрите возможность использования перегруженного метода PageRequest «of».

 public static PageRequest of(int page,
                         int size,
                         Sort.Direction direction,
                         String... properties)
  

Комментарии:

1. Спасибо за информацию, PageRequest идеально подходит для того, что я хотел