有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我可以在Spring数据JPA存储库方法中结合@Query定义和规范吗?

是否可以在一个存储库方法中同时使用@Query注释和规范?例如,我希望有这样一个方法:

@Query(value="SELECT e from EMPLOYEE where firstName <> ?1")
public Page<Employee> findEmployeeBySomethigFancy(String firstName, Pageable pageable, Specification<Employee> emp);

我是否可以或者应该将整个查询构建为Predicate并删除@Query注释


共 (1) 个答案

  1. # 1 楼答案

    首先,你应该读这篇Spring blog post

    其次,根据存储库应该实现的^{}接口,以下方法采用Specification参数:

    • count(Specification<T> spec)
    • List<T> findAll(Specification<T> spec)
    • Page<T> findAll(Specification<T> spec, Pageable pageable)
    • List<T> findAll(Specification<T> spec, Sort sort)
    • T findOne(Specification<T> spec)

    所以,不能将@Query定义与Specification混合使用

    但是,由于可以使用Specification来表示firstName <> ?1条件,并且可以根据需要组合任意多个规范,因此可以仅使用Specification重写整个@Query