#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 и наоборот и вставит соответствующие значения.