Spring CrudRepository findByInventoryIds(List<Long> inventoryIdList) - 相当于 IN 子句

2022-08-31 05:40:31

在Spring CrudRepository中,我们是否支持字段的“IN子句”?即类似于以下内容的东西?

 findByInventoryIds(List<Long> inventoryIdList) 

如果没有这样的支持,可以考虑哪些优雅的选择?为每个 ID 触发查询可能不是最佳选择。


答案 1

findByInventoryIdIn(List<Long> inventoryIdList)应该做这个把戏。

HTTP 请求参数格式如下所示:

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

JPA 存储库关键字的完整列表可以在当前文档列表中找到。它表明这是等价的 - 如果您更喜欢动词以提高可读性 - 并且JPA也支持和。IsInNotInIsNotIn


答案 2

对于Spring Crud存储库中的任何方法,您应该能够自己指定@Query。像这样的东西应该工作:

@Query( "select o from MyObject o where inventoryId in :ids" )
List<MyObject> findByInventoryIds(@Param("ids") List<Long> inventoryIdList);

推荐