如何使用自定义条件在春季数据 JPA 中流式传输结果集



我正在研究一个POC,使用Spring Boot 2.0.5,Spring Data JPA使用Hibernate。我正在尝试实现一种方法来流式传输自定义条件的结果集。我见过这样的例子

public interface MyRepository implements JPARepository<Person,Long>{
@Query("select p from person p")
Stream<Person> findAll();
}

但是,我正在扩展SimpleJPARepository并希望使用类似Criteria将结果作为流获取

Stream<Person> findAll(Criteria criteria);

由于我使用的是扩展SimpleJPARepository的类,因此我需要提供我的实现。但是SimpleJPARepository或其父类中是否有任何方法可以使用我提供的条件为我提供默认实现。任何对此类示例的引用都非常有帮助。

此外,在某些示例中,我看到使用了@NoRepositoryBean,在某些情况下@Repository.我在这两者之间感到困惑,我应该使用哪一个,为什么?

根据 Spring Data JPA规范 Spring Data JPA,这是创建 Criteria 查询的方式。

步骤 1:使用JpaSpecificationExecutor接口扩展存储库接口,如下所示:

public interface CustomerRepository extends CrudRepository<Customer, Long>, JpaSpecificationExecutor {
…
}

步骤 2:findAll 方法返回与规范匹配的所有实体,如以下示例所示:

List<T> findAll(Specification<T> spec);

步骤三:规范接口定义如下:

public interface Specification<T> {
Predicate toPredicate(Root<T> root, CriteriaQuery<?> query,
CriteriaBuilder builder);
}

最新更新