簡體   English   中英

Hibernate:將多對多映射到Map

[英]Hibernate: mapping many-to-many to Map

我正在開發一個處理以下兩個實體的應用程序: 產品 (我們將其命名為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獲取配方Map的所有必要數據的方法嗎? 單獨的配置方法(沒有注釋)是首選。

由於沒有人在沒有注釋的情況下發布解決方案,我將使用JPA 2.0 @ElementCollection注釋顯示解決方案:

@ElementCollection
@CollectionTable(name = "Recipes", 
    joinColumns = @JoinColumn(name = "product_id"))
@MapKeyJoinColumn(name = "material_id")
@Column(name = "count")
private Map<Material, Integer> recipe;

另請注意,由於地圖的值類是Integer ,因此沒有注釋的解決方案可能會記錄為“集合映射”而不是“實體關系映射”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM