java - Hibernate:如何返回map<String,List<Object>>

标签 java hibernate javafx treetableview

我有JavaFX申请 TreeTableView .

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

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

我在列表 <String article> 上使用 foreach 开发了这个但生产数据库表将包含 1000 多篇文章。每篇文章都应该有一个通过不同查询从数据库中获取的产品列表。会很慢...

有没有办法将Hibernate查询的结果集获取为Map <String article, List<Product>>

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));

关于java - Hibernate:如何返回map<String,List<Object>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37463748/

相关文章:

Java Swing框架预览与实际尺寸有差异

java - 找不到以下类: - ImageButton (Change to android. widget.ImageButton,修复构建路径,编辑XML)

hibernate - JPA (Hibernate) 西里尔字母

javafx部署jar文件

java - 使用 JavaFX 的场景或自定义控件中的场景

java - 将字符串的 ArrayList 转换为 BufferedReader

Java:打印出args数组中的所有整数

java - 将条目映射到 Hibernate 中的单独列

java - Spring Hibernate 处理 500 万条记录的方法

macos - 无法在 Mac OS X 10.7.5 上启动 javafx jar