当前位置: 首页 > 知识库问答 >
问题:

参数绑定所需的名称不可分页

印高阳
2023-03-14

我正在尝试使用mySql全文索引“匹配”语法进行查询。

我将Spring Boot版本从1.5.4.RELEASE更改为2.0.0m7,以使用spring data jpa版本2.0.2.Releases,因为在早期的spring data 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);

如果我尝试将可分页设置为参数,则会发生相同的错误。

有什么想法吗?

共有2个答案

那铭
2023-03-14

尝试将 Pageable 放在第一位:

Page<User> foo(Pageable pageable, @Param("filterValue") String filterValue);
刘松
2023-03-14

您不必在查询中显式包含可分页内容。

请参阅参考留档中的示例。

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);
}

我强烈建议您升级到Spring Data的当前发布版本,而不是里程碑版本。

 类似资料:
  • 问题内容: 我在HQL语句中绑定了命名参数,但只是没有被填充。 它输出类似这样的内容,这意味着未设置参数(coln,colv)并返回0条记录。 感谢您提供有关如何在HQL语句中绑定列名称的任何帮助。谢谢。马赫迪。 问题答案: 您不能将列名称绑定为参数。仅一列值。在绑定参数值和执行查询之前,在计算执行计划时必须知道该名称。如果您确实希望拥有这样的动态查询,请使用Criteria API或其他动态创建

  • 在我的申请中。属性,我已覆盖可分页参数的名称: 但是当我去Swagger UI检查我的Swagger留档时,没有使用新的name参数: 这是我的职能部门的签名: 如何将新名称绑定到文档?我可以更改默认描述吗? 谢谢你的回答!

  • 这是我的可选装订 所以现在当我尝试调用这个构造函数时: 我得到了这个错误: 绑定

  • 问题内容: 这已经发布过,但是我的问题有点不同。这是有问题的JPQL查询: 现在我确实尝试做: 但这给了我一个警告: 执行查询的方法是: 忠告? ------------ UPDATE ---------------- 这似乎解决了这个问题: 但是现在我得到一个错误,说: ShopOrder: 问题答案: 而不是使用:po.id =:id而是使用?1 ....

  • 我正在尝试构建一个自定义的< code>NavBar,带有一些可选的< code >视图,比如searchbar(但前提是视图需要显示它)。 基本上,我需要在视图中传递一些带有参数。 下面是一个示例: 我所说的属性是和。但是执行 或 会引发编译错误: 无法将类型“绑定?”的值分配给类型“绑定” 你知道我该如何解决这个问题吗? 还是有更好的方法来做我想做的事?

  • 我对一个问题感到沮丧,我花了几个小时试图解决它!问题是。我试图查找一个已经在我的jboss服务器中声明的主题(MyBestTopic ),但是我有这个异常 在我的java代码中,我试图像这样检索主题: 查看jboss server的启动,我可以看到主题与正确的名称绑定得很好: 最后,当我在jmx控制台上看到jndiView树时,该主题也得到了很好的部署: 相同的java在具有相同部署主题和数据源的