2014-10-27 87 views
1

我有2個關係爲一對多的表。我需要做的是將子表(很多部分)分類到一些類別中並顯示它們。例如,我有一個地區和產品表。所以一個地區會有很多產品,但是有很多屬於特定類別的產品,我將把它們全部顯示在一個部分中。 所以我想要的是這樣的:一對多關係中的HashMap列表

@Entity 
public class Region { 

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

有什麼建議嗎?

回答

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 
} 
0

我建議你先做關係模型,映射到JPA,然後用group by做一個查詢。

讓假設以下模型:

+--------+ /+---------+\ +----------+ 
| 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 
+0

感謝您的回答。但是這並不能解決我的問題。首先,我僅限於'r.region_name,c.category_name,p.product_name'這是因爲group by的性質。其次,我將把它們作爲列表,我也應該在UI中有一個機制來區分類別(在我的情況下,它不僅僅是顯示,順序是以特定的方式在UI中定義的) – pms 2014-10-27 19:59:06