当前位置: 首页 > 面试题库 >

Spring规格和可分页

刘焱
2023-03-14
问题内容

如何使用SpecificationPageable在一起?

personelRepository.java

@Query("SELECT e FROM PersonelEntity e ")
List<PersonelEntity> findData(Specification<PersonelEntity>  test, Pageable pageable);

personelService.java

public List<PersonelEntity> filteredData(Specification<PersonelEntity> filter,Pageable  pageable){
    List<PersonelEntity> filteredData = personelRepository.findData(filter,pageable);
    return filteredData;
}

personelController.java

Pageable reqCount = new PageRequest(0, 10);
Specification<PersonelEntity> filter = new FilterSpecification<PersonelEntity>(new SearchCriteria("name", "=","lux"));
personels = personelService.findData(filter,reqCount);

当我运行它时,会出现这样的错误。但是,如果我像findAll(Pageable page)和findAll(Specification
filter)一样分别调用findAll()函数,它将起作用。但是我不能一起使用。

java.lang.IllegalArgumentException: Parameter with that position [1] did not exist
    at org.hibernate.jpa.spi.BaseQueryImpl.findParameterRegistration(BaseQueryImpl.java:502) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:692) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:181) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:32) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.springframework.data.jpa.repository.query.ParameterBinder.bind(ParameterBinder.java:141) ~[spring-data-jpa-1.11.1.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.StringQueryParameterBinder.bind(StringQueryParameterBinder.java:61) ~[spring-data-jpa-1.11.1.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.ParameterBinder.bind(ParameterBinder.java:101) ~[spring-data-jpa-1.11.1.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.SpelExpressionStringQueryParameterBinder.bind(SpelExpressionStringQueryParameterBinder.java:69) ~[spring-data-jpa-1.11.1.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.ParameterBinder.bindAndPrepare(ParameterBinder.java:161) ~[spring-data-jpa-1.11.1.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.ParameterBinder.bindAndPrepare(ParameterBinder.java:152) ~[spring-data-jpa-1.11.1.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.doCreateQuery(AbstractStringBasedJpaQuery.java:81) ~[spring-data-jpa-1.11.1.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:190) ~[spring-data-jpa-1.11.1.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:121) ~[spring-data-jpa-1.11.1.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:85) ~[spring-data-jpa-1.11.1.RELEASE.jar:na]

问题答案:

通过编辑personelService.java并删除personelRepository上的findData函数来解决。我使用springframework.data.jpa.repository.JpaRepositoryfindAll()函数,它可以工作。

public List<PersonelEntity> filteredData (Specification<PersonelEntity> spec, Pageable pageable){
    Page<PersonelEntity> pageData = personelRepository.findAll(spec,pageable);
    List<PersonelEntity> filteredData = pageData.getContent();
    return filteredData;
}


 类似资料:
  • 问题内容: 如何使用和在一起? personelRepository.java personelService.java personelController.java 当我运行它时,会出现这样的错误。但是,如果我像findAll(Pageable page)和findAll(Specification filter)一样分别调用findAll()函数,它将起作用。但是我不能一起使用。 问题答案:

  • 我刚开始使用和*对象,我一直在做一个简单的左连接,并将一个值与一个连接的实体属性进行比较。由于我要构建的这个查找/选择函数迟早会非常动态,我决定使用Criteria对象,而不是使用不同的参数构建不同的函数。我的真实实体有更多的属性,但我在这里分解它来简化它。 之前,我试图做我的第一步我有一个仓库函数,这是注释与和工作正常: 后来,我试图建立一个忽略小写和名称的规范,但我仍然无法正确地将name参数

  • 公司及产品名称 我们的公司及产品名称是「DaoCloud」。注意这是两个单词的合成词,所以中间沒有空格(参考:GitHub)。如作为 URL 的一部分,应该使用全小写的「daocloud」。 文案风格 一定多检查,确保没有错别字。 即使是流行语中的谐音错别字也不要使用,比如「墙裂」、「童鞋」等。 我们崇尚精练的文风。请在检查中把对表达意思没有明显作用的字、词、句删除,在不影响表达效果的前提下把文案

  • 感谢这里关于堆栈溢出的答案和一些小时的工作;),我的语法终于如期发挥作用了。只是一些小问题或混乱的情况。 以下是我对lexer的定义: 下面是解析器的定义: 看起来lexer文件开头的成员定义在带有ANTLR4插件的IntelliJ IDEA中不起作用?还是我在定义中遗漏了什么。 在标题的定义中,我试图允许开始空白。但是无论我尝试什么,解析过程都失败了。我添加了一个WS标记[\t],但是当我将WS

  • 我正在考虑将我们传统的jpa/道解决方案迁移到Spring Data。 但是,我们的前端之一是SmartGWT,它们的数据库组件仅使用限制/偏移逐步加载数据,这使得难以使用Pagable。 这会导致问题,因为无法确定限制/偏移量最终是否可以转换为页码。(这可能因用户滚动方式、屏幕大小等而异)。 我查看了切片等,但无法找到在任何地方使用限制/偏移值的方法。 想知道有没有人有什么建议?最理想的情况是,

  • 问题内容: 我正在使用Spring Data JPA,当我用来定义一个 WITHOUT 的查询时,它可以工作: 但是,如果我添加第二个参数,则将无法正常工作,Spring将解析该方法的名称,然后抛出 异常 。这是错误吗? 问题答案: 在Spring论坛上提出了一个类似的问题,指出要应用分页,必须派生第二个子查询。因为子查询引用的是相同的字段,所以您需要确保查询对引用的实体/表使用别名。这意味着您在