有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

一对多关系中Hashmap的java列表

我有两个一对多关系的表。我需要做的是将子表(许多部分)分类为一些类别并显示它们。例如,我有一个区域和产品表。所以一个地区会有很多产品,但是有很多产品属于一个特定的类别,我将把它们全部展示在一个部分中。 所以我想要的是:

@Entity
public class Region {

    // ... some codes here
    @OneToMany(fetch = FetchType.LAZY)
    private List<HashMap<Long, List<Product>>> ProductEntities;
    // ... some codes here
}

有什么建议吗


共 (2) 个答案

  1. # 1 楼答案

    这就是我正在做的。但如果能得到更好的解决方案,我们将不胜感激

    @Entity
    public class Region {
    
        // ... some codes here
        @OneToMany(fetch = FetchType.LAZY)
        private List<Product> ProductEntities;
    
        @Transient
        private HashMap<Long, List<Product>> productsMap;
    
        public HashMap<Long, List<Product>> getProductsMap() {
            if (ProductEntities!= null) {
                for (Product product : ProductEntities) {
                    List<Product> productList = productsMap.get(product.getProductTypeEntity().getId());
                    if (productList == null) {
                        productList= new ArrayList<Product>();
                    }
                    productList.add(product);
                    productsMap.put(product.getProductTypeEntity().getId(), productList);
                }
            }
            return productsMap;
        }
    
        // ... rest of codes
    }
    
  2. # 2 楼答案

    我建议您首先使用关系模型,映射到JPA,然后使用GROUPBY进行查询

    假设以下模型:

    +    +    /+    -+\    +     +
    | Region |  -| Product |  -| Category |
    +    +    \+    -+/    +     +
    

    查询可以如下所示:

    select r.region_name, c.category_name, p.product_name
    from Product p
    join p.region r
    join p.category c
    group by r.region_name, c.category_name, p.product_name