在JPA Spring Boot中返回一个Mapped结果



所以我有一个带有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:我应该指出,这将获取ProductJPA实体中指定的所有数据字段,而不仅仅是productCodeproductName。例如,如果Product定义了一个急切加载的集合,这可能值得注意。

最新更新