Spring Boot Pageable-动态nativeQuery。排序过滤器不起作用。 (属性未转换为列名)

时间:2018-09-27 18:01:28

标签: java spring spring-boot pagination spring-data-jpa

public interface UserRepository extends JpaRepository<User, Long> {

  @Query(value = "SELECT id AS USER_ID, name AS NAME FROM USERS ORDER BY ?#{#pageable} ",
    countQuery = "SELECT count(id) FROM USERS ORDER BY ?#{#pageable}",
    nativeQuery = true)
  Page<User> findAll(Pageable pageable);
}

/users --> give me 20 records
/users?sort=name,desc --> give me 20 records sorted by name
/users?sort=userId,desc --> throws the error USERID not valid identifier

我不知道为什么在nativeQuery中没有将userId转换为USER_ID

1 个答案:

答案 0 :(得分:0)

您在@Query nativeQuery = true中定义的

。因此,在这种情况下,属性不会转换为列名。对于实体也是如此,您必须像在查询USERS中一样命名表名,而不是像在定义本机查询时那样使用User实体。

尝试使用/ users?sort = USER_ID,desc 或/ users?sort = user_Id,desc

两者都可以。