Answers:
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);
}