2016-07-01 9 views
4

springデータのfindByメソッドの戻り値の型は?どこにも統合リストが見つかりませんでした。 findByXXXようspring data findBy戻り値の型

1) Entity 
2) Optional<Entity> 
3) List<Entity> 
4) Stream<Entity> 

と、より多くを返すことができますが、我々は明確なリストを持っているのですか?

List<Entity>また、データが見つからない場合はStream<Entity>がnullを返します。ストリームにマップ/フィルタなどを適用すると、NPEが適用されます。

stream関数を呼び出す前にNullを物理的にチェックする以外に、NPEを引き起こさずにStreamを使用するより良い方法がありますか?

+0

'List 'の代わりに/ 'Collection ' –

答えて

0

あなたの可能な返品のタイプのリストは、あなたは結果をページ付けする必要があるときにもタイプPageスライスを使用することができます。例を参照してください:

Page<User> findByLastname(String lastname, Pageable pageable); 

Slice<User> findByLastname(String lastname, Pageable pageable); 

「最初の方法は、あなたが動的に静的に定義されたクエリにページングを追加するために、クエリメソッドにorg.springframework.data.domain.Pageableインスタンスを渡すことができますが、合計知っています。使用可能な要素数やページ数などがありますが、インフラストラクチャでカウントクエリをトリガして全体の数を計算すると、使用するストアによってはコストがかかることがあるため、代わりにスターンをリターンとして使用することができます。次のスライスは利用可能で、歩行時に十分な結果セットが得られると思っていました。 - 詳細:Spring Data Documentation

別の質問については、Guava/Java 8 (任意)を使用できます。このようにして、クエリメソッドは、検索されたオブジェクトを含むオプションまたは空のオプションを返します。 オプション例を参照して、null以外の値を持つNULL可能Tの参照を交換する方法です:

Optional<User> findById(Long id); 

私は、私はあなたが助けを持っていることを望みます。 =)