Java 参数绑定所需的名称不适用于Pageable
我正在尝试使用mySql全文索引对语法进行匹配,并使用paegable进行查询 我将spring引导版本从1.5.4.RELEASE更改为2.0.0m7,以使用spring数据jpa版本2.0.2.RELEASE,因为在早期的spring数据jpa版本中,带有countQuery的本机查询不起作用 我已经解决了几个问题,使用解决方案和 当前问题是以下错误: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
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);
}