Java 一对多关系中的Hashmap列表
我有两个一对多关系的表。我需要做的是将子表(许多部分)分类为一些类别并显示它们。例如,我有一个区域和产品表。所以一个地区会有很多产品,但是有很多产品属于一个特定的类别,我将把它们全部展示在一个部分中。 所以我想要的是:Java 一对多关系中的Hashmap列表,java,jpa,map,one-to-many,Java,Jpa,Map,One To Many,我有两个一对多关系的表。我需要做的是将子表(许多部分)分类为一些类别并显示它们。例如,我有一个区域和产品表。所以一个地区会有很多产品,但是有很多产品属于一个特定的类别,我将把它们全部展示在一个部分中。 所以我想要的是: @Entity public class Region { // ... some codes here @OneToMany(fetch = FetchType.LAZY) private List<HashMap<Long, List&l
@Entity
public class Region {
// ... some codes here
@OneToMany(fetch = FetchType.LAZY)
private List<HashMap<Long, List<Product>>> ProductEntities;
// ... some codes here
}
@实体
公共类区域{
//…这里有一些代码
@OneToMany(fetch=FetchType.LAZY)
私营实体;
//…这里有一些代码
}
有什么建议吗?我建议您先做关系模型,映射到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
这就是我正在做的。但如果能得到更好的解决方案,我们将不胜感激
@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
}
@实体
公共类区域{
//…这里有一些代码
@OneToMany(fetch=FetchType.LAZY)
私营实体;
@短暂的
私有HashMap产品映射;
公共HashMap getProductsMap(){
if(ProductEntities!=null){
对于(产品:ProductEntities){
List productList=productsMap.get(product.getProductTypeEntity().getId());
if(productList==null){
productList=新的ArrayList();
}
productList.add(产品);
productsMap.put(product.getProductTypeEntity().getId(),productList);
}
}
返回产品映射;
}
//…其余代码
}
谢谢你的回答。但这并不能解决我的问题。首先,我仅限于r.地区名称、c.类别名称、p.产品名称
,这是因为group by的性质。其次,我将把它们作为列表,这同样应该在UI中有一个机制来区分类别(在我的例子中,它不仅仅是显示。顺序在UI中以特定的方式定义)