복붙노트

[SPRING] 봄 사양 및 Pageable를

SPRING

봄 사양 및 Pageable를

어떻게 사양 및 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를 페이지)와 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]

해결법

  1. ==============================

    1.편집 personelService.java에 의해 해결하고 personelRepository에 findData에게 기능을 삭제합니다. 나는 springframework.data.jpa.repository.JpaRepository findall은 () 함수를 사용하고 작동합니다.

    편집 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;
    }
    
  2. from https://stackoverflow.com/questions/43447687/spring-specification-and-pageable by cc-by-sa and MIT license