#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 идеально подходит для того, что я хотел