2016-01-10 13 views
12

私は春-DATA-JPAを使用した春ブートアプリケーションのためのバックエンドの配線コードを生成するコード世代ツールを書いているし、反復可能で提供していないとして、それは、CrudRepositoryのメソッドは、リストではなく、反復処理可能を返すことを私に穏やかに迷惑なんです非常に十分な機能性を持っていますが、Listがありますので、イテレートをリストに変換する最良の方法を探しています。Spring-Data JPA CrudRepositoryはIterableを返します。これをListにキャストできますか?

私はコレクションに反復可能を変えると私は思ってではなく、グアバなどのライブラリを使用して、または変換を行うために私自身の機能を実装した上でthis postを見て、なぜちょうどそれをリストにキャストしていませんか?私が知らないことをすることに何か問題がありますか?

編集:私は尋ねる それがコード世代ツールですので、それはサードパーティのライブラリに依存関係を紹介するコードを生成するために合理的ではない、との変換を行うために自分自身の関数を作成することも、本当に合理的ではないので理由どこかに生きなければならないだろうし、生成されたコードではそうしたくないだろう。単純なキャストは、少し醜い場合は動作しますが、私は行方不明のものがあるかどうか疑問に思っていますか?

答えて

18

いいえ、私はそれはOKだとは思いません。

ListIterableIterableListではないかもしれないことが保証されます。つまり、IterableListにキャストすると、実行時にエラーが発生する可能性があります。たとえ動作しても、今後Spring Data JPAの新しいバージョンでインタフェースの契約を破らずに変更できるため、今後も動作するという保証はありません。

代わりのキャストを使用して、あなたはListを返す独自のクエリメソッドを宣言する必要があります。

40

あなたはので、私はあなたがJPAを使用すると思い[spring-data-jpa]を述べました。この場合、JpaRepositoryの代わりに、あなたがそれを望むような方法がList年代を返すCrudRepositoryを使用しています。

+0

Cool。私は今ドキュメンテーションを見てきました。 JpaRepositoryは、リポジトリを拡張するCrudRepositoryを拡張するPagingAndSortingRepositoryを拡張します。だから、それはちょっと他の人たちの上に構築されます。きちんとしたええ、私は最もクリーンな解決策がJpaRepositoryに切り替えることだと思います。 –

+0

シンプルで素敵です。 – SMUsamaShah

+1

これは不幸なことに、常にうまくいきません。例えば、 'PagingAndSortingRepository'を使用している場合、' CrudRepository'から継承されます。 – eav

関連する問題