Java 参数绑定所需的名称不适用于Pageable

Java 参数绑定所需的名称不适用于Pageable,java,mysql,sql,spring-boot,spring-data-jpa,Java,Mysql,Sql,Spring Boot,Spring Data Jpa,我正在尝试使用mySql全文索引对语法进行匹配,并使用paegable进行查询 我将spring引导版本从1.5.4.RELEASE更改为2.0.0m7,以使用spring数据jpa版本2.0.2.RELEASE,因为在早期的spring数据jpa版本中,带有countQuery的本机查询不起作用 我已经解决了几个问题,使用解决方案和 当前问题是以下错误: javax.servlet.ServletException: org.springframework.orm.jpa.JpaSystemE

我正在尝试使用mySql全文索引对语法进行匹配,并使用paegable进行查询

我将spring引导版本从1.5.4.RELEASE更改为2.0.0m7,以使用spring数据jpa版本2.0.2.RELEASE,因为在早期的spring数据jpa版本中,带有countQuery的本机查询不起作用

我已经解决了几个问题,使用解决方案和

当前问题是以下错误:

javax.servlet.ServletException: org.springframework.orm.jpa.JpaSystemException: could not execute query; nested exception is org.hibernate.exception.GenericJDBCException: could not execute query
...
Caused by: java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1).
这是代码

@Query( value = "SELECT Distinct u.* " +
    "FROM user AS u " +
    "WHERE MATCH(u.name, u.email) against(:filterValue) " +
    "ORDER BY u.id \n#pageable\n#",
    countQuery = "SELECT count(Distinct u.id) " +
    "FROM user AS u " +
    "WHERE MATCH(u.name, u.email) against(:filterValue) " +
    "ORDER BY u.id \n#pageable\n#",
    nativeQuery = true)
Page<User> foo(@Param("filterValue") String filterValue, Pageable pageable);
如果我尝试将pageable设置为param,同样的错误也会发生


有什么想法吗?

试着把Pageable放在第一位:

Page<User> foo(Pageable pageable, @Param("filterValue") String filterValue);

您不必在查询中显式地包含pageable

请参见中的示例


我强烈建议您升级到当前版本的Spring Data,而不是milestone build。

无需在@Query中提及pageable。如果您已经从Paging和SortingRepositoryYes扩展了存储库类,Spring将自动接受它,但是当我尝试在没有它的情况下启动服务器时,我也会遇到同样的错误,当我在查询中包含可分页的明确性并使用占位符?1时,它会引发上面提到的错误。。。我会试着看看这听起来很难看。我刚刚提交了一份DATAJPA-928的公关。之后,上述工程的广告。
public interface UserRepository extends JpaRepository<User, Long> {

  @Query(value = "SELECT * FROM USERS WHERE LASTNAME = ?1",
    countQuery = "SELECT count(*) FROM USERS WHERE LASTNAME = ?1",
    nativeQuery = true)
  Page<User> findByLastname(String lastname, Pageable pageable);
}