ManyToMany свойства

#java #hibernate

#java #спящий режим

Вопрос:

Это может быть глупый вопрос или может быть задан, но я не нашел, что мне помогло. Может кто-нибудь из вас, ребята, сказать мне, что делают эти свойства, описанные в отношении ManyToMany. И если есть какие-либо, которые я пропустил и которые следует использовать в сопоставлении ManyToMany, пожалуйста, помогите мне и с этим.

 @ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "customer_service",
    joinColumns = {@JoinColumn(name = "customer_id")},
    inverseJoinColumns = @JoinColumn(name = "service_id"))
  

Комментарии:

1.Прочитайте документы API: @ManyToMany @JoinTable @JoinColumn CascaseType и вернитесь, когда у вас возникнет более конкретный вопрос. Вам также может быть полезно руководство по Java EE 6, часть VI — Сохранение:

Ответ №1:

Это описание отношения «многие ко многим» между (я предполагаю) Customer и Service таблицами. Технически все атрибуты являются необязательными, поэтому:

 @ManyToMany
private Set<Customer> services;
  

было Service бы хорошо (аналогичная аннотация на Customer стороне, если связь двунаправленная).

Теперь предположим, что у вас есть некоторые базовые знания в области проектирования реляционных баз данных:

  • @JoinTable описывает таблицу соединений, используемую для хранения отношений между клиентом и сервисом. Каждая строка содержит одну ссылку на customer и одну на service. Эта таблица будет называться customer_service

  • joinColumns — определение столбцов, ссылающихся на вторую сторону отношения — customer_id

  • inverseJoinColumns — определение столбцов, ссылающихся на начальную сторону — service_id в этом примере.

Столбцы с соединением и обратным соединением симметричны — если вы определяете отношение «многие ко многим» на другой стороне, вы переключаете их. В противном случае все будет работать с точки зрения Java, но Hibernate создаст внешний ключ из customer_id Service таблицы to и наоборот и вставит соответствующие значения.