Spring CrudRepository findByInventoryIds(List <Long> inventoryIdList) – 相当于IN子句
在Spring CrudRepository中,我们是否支持一个字段的“IN子句”? 即类似于以下内容?
findByInventoryIds(List<Long> inventoryIdList)
如果这种支持不可用,可以考虑哪些优雅的选项? 为每个ID触发查询可能不是最佳的。
findByInventoryIdIn(List<Long> inventoryIdList)
应该做的伎俩。
HTTP请求参数格式将如下所示:
Yes ?id=1,2,3 No ?id=1&id=2&id=3
JPA存储库关键字的完整列表可以在当前文档列表中find 。 它表明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);
是的,这是支持的。
请查看此处提供的文档以获取方法名称中的受支持关键字。
您可以在存储库接口中定义方法,而不使用@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); }
- 存储库模式 – 如何理解它,以及它如何与“复杂”实体协同工作?
- 增加Java堆大小永久?
- 什么是字符文字中的转义数字的Java语义,例如'\ 15'?
- 鉴于jdk1.6及以上版本中的HashMaps导致multi = threading的问题,应该如何修复我的代码
- 为什么不鼓励Java EE容器中的产卵线程?
- debuggingSpringconfiguration
- 以印度编号格式显示货币
- 无法传输工件org.apache.maven.plugins:maven-surefire-plugin:pom:2.7.1 from / to central(http://repo1.maven.org/maven2)
- Java – 将int转换为4字节的字节数组?