簡體   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