2017-04-17 119 views
1

我該如何使用它一起(規範和可分頁)?彈簧規格和可分頁

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頁面)和findAll(規範過濾器)它分開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] 
. 
. 
. 
. 
+0

你怎麼使用這個,你能提供一些代碼嗎?我當然是 –

+0

。 –

回答

0

您需要添加countQuery支持分頁

@Query(query ="SELECT e FROM PersonelEntity e " 
     ,countQuery ="select count(e.id) from PersonelEntity e" 

,我想你需要引用spec不知何故在查詢

+0

它不起作用。 –

+0

不起作用意味着什麼。張貼完全你做了什麼,確切的結果 - 錯誤等 – StanislavL

+0

我得到同樣的錯誤 –

0

通過編輯personelService.java解決和刪除findData功能personelRepository。我使用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; 
}