繁体   English   中英

休眠:如何返回地图 <String, List<Object> &gt;

[英]Hibernate: how to return map<String, List<Object>>

我有带有TreeTableView JavaFX Application。

我想在树上显示产品清单。 树的第一层必须包含Product.article。 第二层树必须具有包含Product.article的产品列表,如下所示:

article1/
    -- name model sizes
    -- name model sizes
article2/
    -- name model sizes
    -- name model sizes

我已经用List <String article>上的foreach开发了这个,但是生产中的数据库表将包含1000多个文章。 每篇文章都应通过不同的查询列出数据库中的产品。 太慢了...

有没有办法以Map <String article, List<Product>>形式获取Hibernate查询的结果集?

PS:对不起,我的英语不好。

您可以使用以下命令在一个查询中将所有产品检索为List<Product>

TypedQuery<Product> query = em.createQuery("select p from Product p", Product.class);
List<Product> allProducts = query.getResultList();

然后组织它们:

Map<String, List<Product>> productsByArticle = allProducts.stream()
    .collect(Collectors.groupingBy(Product::getArticle));

这应该是相当有效的,因为它只涉及一个查询,并且假设您仍然需要所有数据,则需要以某种方式获取它。 “分组依据”操作在产品数量上或多或少是线性的(我认为),与执行查询相比,所花费的时间可以忽略不计。

(显然,您可以一次性完成此操作,尽管它的功能完全相同):

TypedQuery<Product> query = em.createQuery("select p from Product p", Product.class);
Map<String, List<Product>> productsByArticle = query.getResultList().stream()
    .collect(Collectors.groupingBy(Product::getArticle));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM