4

JPA リポジトリからストリームを作成したいと思います。目標は、レポからのエンティティ (100 万を超える可能性があります) を別のレポに格納される他のエンティティにマッピングすることです。

これまでのところ、指定された数 (たとえば 1000) のエンティティを収集し、それらをターゲット Repo に格納する Collector を作成しました。これは並列ストリームで機能します。私が今必要としているのは、ソース リポジトリからエンティティをフェッチし、必要に応じてそれらをストリームにフィードする良い方法です。

これまでのところ最も有望なのは、生成を介してストリームを構築するためにサプライヤー(http://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html)を実装することでしたが、私は見つけられませんでしたソース Repo へのクエリが別のエンティティを提供しない場合にプロセスを終了する方法。

ポインタはありますか?

4

4 に答える 4

3

最近、Spring Data Fowler リリース トレインの最新の RC1 リリースで、Spring Data JPA (および MongoDB) にこれのサポートを追加しました。

委任のデフォルト メソッドによって返される Stream の 例 「実際のストリーミング」Stream の例

于 2015-03-09T08:31:36.647 に答える
2
于 2014-09-18T11:49:07.157 に答える
0

簡単な例は次のとおりです。

  @Repository
  public class MyEntityRepository extends CrudRepository<MyEntity, Long> {           
  }

  @Component
  public class MyEntityService {

       @Autowired
       private MyEntityRepository myEntityRepository;


       public void() {
            // if the findAll() method returns List
            Stream<MyEntity> streamFromList = myEntityRepository.findAll().stream();


            // if the findAll() method returns Iterable
            Stream<MyEntity> streamFromIterable = StreamSupport.stream(myEntityRepository.findAll().spliterator(), true);

       }
  } 
于 2014-09-17T19:51:26.660 に答える