簡體   English   中英

將Hibernate映射到自引用的多對多映射

[英]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映射到IngredientfoodId 然后,您將可以輕松獲取一種Food所有Ingredient條目。

暫無
暫無

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

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