Отображение гибернации на самореферентную карту «многие ко многим» - PullRequest
0 голосов
/ 18 марта 2019

В моей базе данных у меня есть Food, который имеет отношение многие ко многим с другим ингредиентом Foods. Эти отношения представлены как таковые ...

+=============Foods============+    +==========Ingredients===========+
| Id | Name      | Description |    | FoodId | IngredientId | Amount |
+==============================+    +================================+
| 1  | Ice Cream | ........... |    | 1      | 2            | 300    |
+------------------------------+    +--------------------------------+
| 2  | Milk      | ........... |
+------------------------------+

В модели предметной области, однако, наиболее логичной структурой данных будет карта Foods и суммы. В конечном итоге, когда я загружаю «Мороженое», мне нужно, чтобы на карте были все ингредиенты Foods (найденные через таблицу ингредиентов) вместе с соответствующим значением, но у меня возникли проблемы с выяснением, как это сделать.

@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;

1 Ответ

1 голос
/ 18 марта 2019

Сначала я создал бы новую сущность Ingredient, которая имеет составной ключ, состоящий из обоих внешних ключей, вместе с целым числом amount.Вы можете использовать Food непосредственно в качестве типов полей для обоих внешних ключей.

Затем в вашей сущности Food вы можете добавить @OneToMany Set<Ingredient>, сопоставляющий id с Ingredient '* foodId.После этого вы сможете легко получить все Ingredient записи для одного Food.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...