Spring Data JPA中的findAll方法中无法使用规范。

3

我正在尝试在我的存储库findAll方法中使用规范,但是我得到了这个消息:

Cannot resolve method 'findAll(org.springframework.data.jpa.domain.Specification<com.package.business.Eleve>)'

这是我的规范类:
public class EleveSpecification {

    public static Specification<Eleve> nomIsLike(final String nom) {

        return new Specification<Eleve>() {
            @Override
            public Predicate toPredicate(Root<Eleve> personRoot, CriteriaQuery<?> query, CriteriaBuilder cb) {
                String likePattern = getLikePattern(nom);
                return cb.like(cb.lower(personRoot.<String>get(Eleve_.nom)), likePattern);
            }

            private String getLikePattern(final String nom) {
                StringBuilder pattern = new StringBuilder();
                pattern.append(nom.toLowerCase());
                pattern.append("%");
                return pattern.toString();
            }
        };
    }
}

我使用JUnit来测试我的规范:

@org.junit.Test
    public void findByNom() {
        List<Eleve> eleves = eleveRepository.findAll(EleveSpecification.nomIsLike("yassine"));

        //System.out.print(eleve.getNom());
        for (Eleve eleve : eleves) {
            System.out.print("" + eleve.getNom() + "  " + eleve.getPrenom());
        }

    }

这是我的存储库接口:
public interface EleveRepository extends JpaRepository<Eleve, Integer> {

}

1
请发布您的仓库接口(包括extends参数)。 - Ralph
我添加了我的仓库接口,但我不认为问题来自那里。 - yassine__
1个回答

9
你的代码库需要满足以下要求:
public interface EleveRepository extends JpaRepository<Eleve, Integer>, JpaSpecificationExecutor<Eleve> {

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接