我有两张表,一对多的关系。我需要做的是将子表(许多部分)分类为某些类别并显示它们。例如,我有一个区域和产品表。因此,一个地区将拥有许多产品,但有许多产品属于特定类别,我将把它们全部显示在一个部分中。 所以我想要的是:
@Entity
public class Region {
// ... some codes here
@OneToMany(fetch = FetchType.LAZY)
private List<HashMap<Long, List<Product>>> ProductEntities;
// ... some codes here
}
有什么建议吗?
答案 0 :(得分: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
}
答案 1 :(得分: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