如何使用Specification
和Pageable
在一起?
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.JpaRepository
findAll()函数,它可以工作。
public List<PersonelEntity> filteredData (Specification<PersonelEntity> spec, Pageable pageable){
Page<PersonelEntity> pageData = personelRepository.findAll(spec,pageable);
List<PersonelEntity> filteredData = pageData.getContent();
return filteredData;
}
问题内容: 我正在尝试转换此原始sql查询: 在Spring Data规范中,我认为到目前为止我的问题是如何连接这些表。 这是我当前在规范中的转换: 我得到这个异常: 我想补充一点,例如我是Spring框架的新手,因此这是我在Spring上的第一个应用程序,因此我对新手问题表示歉意;) 编辑:添加的实体产品,BeforeRelationShip Product和FollowRelationShip
问题内容: 如何使用和在一起? personelRepository.java personelService.java personelController.java 当我运行它时,会出现这样的错误。但是,如果我像findAll(Pageable page)和findAll(Specification filter)一样分别调用findAll()函数,它将起作用。但是我不能一起使用。 问题答案:
问题内容: 我到处都读到有关Spring如何鼓励您在代码中使用接口的信息。我没看到 您的spring xml配置中没有接口的概念。Spring的哪一部分实际上鼓励您使用接口(而不是文档)? 问题答案: 为类定义接口时,它有助于进行依赖项注入。您的Spring配置文件本身不包含任何有关接口的信息-您只需输入类的名称即可。 但是,如果您要注入另一个提供“等效”功能的类,则使用接口确实会有所帮助。 例如
问题内容: 我有一个Web应用程序,这里有一个典型的问题,即针对不同环境需要不同的配置文件。某些配置作为JNDI数据源放置在应用程序服务器中,但是某些配置保留在属性文件中。 因此,我想使用Spring配置文件功能。 我的问题是我没有运行测试用例。 context.xml: 测试: 问题似乎是无法解析用于加载配置文件的变量: 当前配置文件应使用注释设置。由于这是一个测试用例,因此我将无法使用。如果可
问题内容: 我正在构建一个包含以下过程的spring-batch解决方案: 步骤1:将列表分为多个列表步骤2:处理每个子列表步骤3:合并子列表 生成的子列表可以并行处理,并且根据spring-batch文档支持。可悲的是,我只能找到以并行步骤开始的spring- batch示例作业,而不是顺序开始的示例。 以下作业将无法编译。Spring给我一个错误:“无法解决step2” 那么,如何配置作业以首
问题内容: 我处理遗留代码库,其中未在春天有线了一类需要获得一类 是 在春季接线。我希望创建一个在启动时已连接的工厂类,然后可以调用getInstance()方法来获取一个连接对象。最好的方法是什么? 例: 我需要在启动时连接FooFactory,以便LegacyA可以简单地调用getInstance(),以便它返回Foo的实例(这也是在应用程序上下文中定义的bean)。 编辑:我不得不重新整理我