我可以在一个Spring Data JPA存储库方法中组合@Query定义和规范吗?

时间:2014-10-15 09:53:20

标签: java spring hibernate jpa spring-data-jpa

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

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

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

1 个答案:

答案 0 :(得分:14)

首先,您可能需要先阅读此blog post。其次,根据您的存储库应该实现的JpaSpecificationExecutor接口,您可以使用规范运行以下查询:

  • count(规格规格)
  • 列出findAll(规格规格)
  • Page findAll(规格规格,可分页,可分页)
  • 列出findAll(规范规范,排序排序)
  • T findOne(规格规格)

所以你需要不能混合@Query(或查询方法)和规范。

你可以表达这个条件:

firstName <> ?1

使用规范代替。然后,您可以根据需要组合多个规格。