所以我有一个带有products表的数据库,要求我以某种方式传递产品代码列表,并返回映射的productName和相应的productCode。
类似于以下内容:映射<字符串,字符串>getProductNamesByCode(列出产品代码(;
我是Java&SpringBoot,我需要任何查询或自定义函数中的存储库代码,这可能吗?
- 我们使用JPA
- 产品表还有其他字段
BruteForce的方法是在productCodes列表中运行for循环,并通过逐个查找名称来填充映射。
您可以创建这样的Spring Data JPA存储库查询:
Stream<Product> findAllByProductCode(Collection<String> productCodes);
这将为您提供一个JavaStream
。然后,您应该能够将Stream
的元素映射到Map
,就像您所描述的那样。
Map<String, String> productMap = repository
.findAllByProductCodes(productCodes)
.collect(toMap(Product::getProductCode, Product::getProductName));
EDIT:我应该指出,这将获取Product
JPA实体中指定的所有数据字段,而不仅仅是productCode
和productName
。例如,如果Product
定义了一个急切加载的集合,这可能值得注意。