Hibernate / JPA отношения многие ко многим через таблицу соединений и составной ключ, проблема уникальных ограничений
Поэтому я задал этот вопрос вчера, но цель постов изменилась, и вопрос другой:
Hibernate / JPA Коллекция элементов со многими ко многим отношениям?
Я хочу знать, возможно ли создавать объекты, которые будут моделировать мои необходимые отношения, чтобы Hibernate создавал мою схему при запуске приложения.
Отношения, которые я хочу, выглядят так:
Дело в том, что таблица Join может содержать строки, которые не связаны ни с какими элементами. Структура представляет категоризацию элементов на основе пары «тип» и «значение» и вводится в систему за пределами этого конкретного приложения.
То, что я хотел бы сделать, - это настроить мою Элементную Hibernate Entity так, чтобы она содержала список категорий посредством сопоставления, чтобы я мог реально видеть, к каким категориям принадлежит мой элемент AND, чтобы hibernate создал для меня таблицу.
Вот что у меня получилось: отобразить это в моем классе Element Entity следующим образом:
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "ELEMENT_ELEMENTCATOGORY", joinColumns = {
@JoinColumn(name = "type", referencedColumnName = "type"),
@JoinColumn(name = "value", referencedColumnName = "value") })
@Column(name = "category")
public List<ElementCategory> getCategories() {
return categories;
}
Это делает большую часть того, что я хочу, это создает мои таблицы, как указано выше, именно так, как я хочу, чтобы они исключали одну вещь, в таблицу элементов добавлена уникальная зависимость в паре (тип, значение). Я не хочу этого, потому что несколько элементов могут иметь одинаковую пару типа и значения, мне нужно иметь возможность остановить создание уникального ограничения с самого начала, но не могу понять, как с текущим отображением я могу это сделать? Я пропускаю суть отношений «многие ко многим»?