![](/img/trans.png)
[英]How to return List<Map<String, Object>> using Hibernate
[英]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.