首页 > 解决方案 > 在 Spring @Query 中使用变量

问题描述

我在让我的变量在我的@Query 中工作时遇到问题。下面是代码

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

我知道我想要的变量正在正确传递。目前这只是返回由 userId 排序的所有结果。如果我对传递给此函数的值进行硬编码,那么它会正确返回由 userEmail 排序的结果(这是传递的内容)。任何建议都会很棒。

标签: javaspring

解决方案


不幸的是,由于底层 JDBC 限制,您只能将参数传递给“条件”子句(如“where”)。

而不是考虑使用重载的 PageRequest "of" 方法

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

推荐阅读