繁体   English   中英

我可以在 Spring Data JPA 存储库方法中将 @Query 定义与规范结合使用吗?

[英]Can I combine a @Query definition with a Specification in a Spring Data JPA repository method?

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

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

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

首先,您应该阅读这篇Spring 博客文章

其次,根据JpaSpecificationExecutor接口,您的存储库应该实现,以下方法采用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使用Specification重写整个@Query

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM