[英]Hibernate mapping to a self-referential, many-to-many map
在我的數據庫中,我有一種Food
與其他成分Foods
多對多的關系。 這種關系表示為...
+=============Foods============+ +==========Ingredients===========+
| Id | Name | Description | | FoodId | IngredientId | Amount |
+==============================+ +================================+
| 1 | Ice Cream | ........... | | 1 | 2 | 300 |
+------------------------------+ +--------------------------------+
| 2 | Milk | ........... |
+------------------------------+
但是,在域模型中,最合乎邏輯的數據結構將是Foods
和數量的地圖。 最終,當我加載“ Ice Cream”時,我需要地圖包含所有成分Foods
(可通過Ingredients表找到)以及相應的值,但是我很難弄清楚該怎么做。
@Entity
@Table(name="Foods")
public class Food {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="Id")
private int id;
@Column(name="Name")
private String name;
@Column(name="Description")
private String description;
@ManyToMany ???
private Map<Food, Integer> ingredients;
我首先要創建一個新的實體Ingredient
,它具有一個由兩個外鍵以及amount
整數組成的復合鍵。 您可以將Food
直接用作兩個外鍵的字段類型。
然后,在您的Food
實體中,您可以添加一個@OneToMany
Set<Ingredient>
將id
映射到Ingredient
的foodId
。 然后,您將可以輕松獲取一種Food
所有Ingredient
條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.