Новое в JPA и ORM, так что этот вопрос может быть старым. У меня есть следующие таблицы:
CREATE TABLE INSTITUTION (
inst_id BIGINT PRIMARY KEY,
:
:
);
и
CREATE TABLE PERSON (
pers_id BIGINT PRIMARY KEY,
:
:
);
каждая из приведенных выше таблиц имеет отношение «один ко многим» к другой таблице, CONTACTINFO
CREATE TABLE CONTACTINFO (
cont_id BIGINT PRIMARY KEY,
:
:
);
В таблицах СУБД связь может быть отображена с помощью двух таблиц соединения:
JOIN_CONTACTS_PERSON ( cont_id, pers_id )
JOIN_CONTACTS_INSTITUTION ( cont_id, inst_id )
В SQL связь может быть установлена путем объединения нужных таблиц с использованием правильной таблицы соединения, например:
SELECT *
FROM Person AS p
JOIN Join_Contacts_Person AS jt ON p.pers_id = jt.pers_id
JOIN Contacts AS c ON jt.cont_id = c.cont_id;
В JPA сторона-владелец отношения «один ко многим» должна быть стороной «многие», в данном случае это таблица «Контакты». Но, похоже, нет никакого способа сопоставить более одной таблицы соединений со стороны «многих», используя аннотации JPA.
Мои вопросы: 1) невозможно ли сопоставить двунаправленную ассоциацию «многие к одному» через более чем одну таблицу соединений? ... 2) Нельзя ли также сопоставить однонаправленное отношение «многие к одному» через две или более таблиц соединений? ... и ... 3) будет ли возможным обходным путем использовать аннотацию @ManyToMany для двух однонаправленных сопоставлений и сделать "одну" сторону владеющей стороной каждого отношения?