我正在开发一个处理以下两个实体的应用程序: 产品 (将其命名为X,Y,Z)和 材料 (a,b,c,…)。众所周知,每种产品都有一个配方,指示制造该产品所需的材料。例如,要产生一个X,我们需要2 a,6 c和4 d(X = 2a + 6c + 4d)。
这就是它在数据库表中的反映方式:
Products id INT name VARCHAR ... Materials id INT name VARCHAR ... Recipes product_id INT material_id INT count INT
第三张表中的“计数”字段是同类材料(本例中为2、6、4)的系数。
所以我想以这种方式编写Product类:
public class Product { ... private Map<Material, Integer> recipe; // How many units of each material we need? ... }
是否可以使用Hibernate来获取配方图的所有必要数据?首选单独的配置方法(无注释)。
由于没有人发布没有注释的解决方案,因此我将使用JPA 2.0 @ElementCollection注释显示解决方案:
@ElementCollection
@ElementCollection @CollectionTable(name = "Recipes", joinColumns = @JoinColumn(name = "product_id")) @MapKeyJoinColumn(name = "material_id") @Column(name = "count") private Map<Material, Integer> recipe;
另请注意,由于地图的值的类别为Integer,没有注释的解决方案很可能会记录为“集合映射”而不是“实体关系映射”。
Integer