首页 > 解决方案 > 如何在 JPA 存储库的自定义方法中使用规范

问题描述

假设我有这个搜索存储库方法:

@Query(value = "SELECT t.a, t.b, t.c, t.d, t.e from Table t where t.a= :param1 and t.e= :param2")
Page<MyObject> search(Long param1, Long param2, Pageable pageable);

我想将规范应用到此方法中,如下所示:

@Query(value = "SELECT t.a, t.b, t.c, t.d, t.e from Table t where t.a= :param1 and t.e= :param2")
Page<MyObject> search(Long param1, Long param2, Specification specification, Pageable pageable);

有可能做到吗?因为我很确定规范只能应用于默认的 Spring 方法(findAll)。

标签: springpostgresqlspring-boot

解决方案


正确答案是否定的。根据 JpaSpecificationExecutor,您可以通过以下方法使用 Specification 对象:

findOne(@Nullable Specification<T> spec);
findAll(@Nullable Specification<T> spec);
findAll(@Nullable Specification<T> spec, Pageable pageable);
findAll(@Nullable Specification<T> spec, Sort sort);
count(@Nullable Specification<T> spec);

推荐阅读