回答:
findByInventoryIdIn(List<Long> inventoryIdList)
トリックを行う必要があります。
HTTPリクエストパラメータの形式は次のようになります。
Yes ?id=1,2,3
No ?id=1&id=2&id=3
JPAリポジトリキーワードの完全なリストは、現在のドキュメントリストにあります。これは、IsIn
読みやすさのために動詞を好む場合は同等であり、JPAはNotIn
およびもサポートしていることを示していますIsNotIn
。
Spring CrudRepositoryのどのメソッドでも、@ Queryを自分で指定できるはずです。このようなものがうまくいくはずです:
@Query( "select o from MyObject o where inventoryId in :ids" )
List<MyObject> findByInventoryIds(@Param("ids") List<Long> inventoryIdList);
Set<String>
はパラメータとして使用しましたが、うまくいきました。
はい、サポートされています。
メソッド名内でサポートされているキーワードについては、ここに提供されているドキュメントを確認してください。
@Queryアノテーションを使用したり、カスタムクエリを記述したりせずに、リポジトリインターフェースでメソッドを定義するだけです。あなたの場合は次のようになります:
List<Inventory> findByIdIn(List<Long> ids);
InventoryエンティティーとInventoryRepositoryインターフェースがあることを前提としています。ケースのコードは次のようになります。
エンティティ
@Entity
public class Inventory implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
// other fields
// getters/setters
}
リポジトリ
@Repository
@Transactional
public interface InventoryRepository extends PagingAndSortingRepository<Inventory, Long> {
List<Inventory> findByIdIn(List<Long> ids);
}