230

Spring CrudRepository では、フィールドの「IN 句」はサポートされていますか? つまり、次のようなものですか?

 findByInventoryIds(List<Long> inventoryIdList) 

そのようなサポートが利用できない場合、どのような洗練されたオプションを検討できますか? ID ごとにクエリを実行するのは最適ではない場合があります。

4

3 に答える 3

379

findByInventoryIdIn(List<Long> inventoryIdList)トリックを行う必要があります。

HTTP リクエスト パラメータの形式は次のようになります。

Yes ?id=1,2,3
No  ?id=1&id=2&id=3

JPA リポジトリ キーワードの完全なリストは、現在のドキュメント リストにあります。IsIn読みやすさのために動詞を好む場合は、これは同等であり、JPA はNotInandもサポートすることを示していますIsNotIn

于 2013-09-25T04:42:07.417 に答える
125

Spring CrudRepository のどのメソッドでも、 @Query を自分で指定できるはずです。このようなものが動作するはずです:

@Query( "select o from MyObject o where inventoryId in :ids" )
List<MyObject> findByInventoryIds(@Param("ids") List<Long> inventoryIdList);
于 2013-09-24T16:47:16.893 に答える