Здравствуйте, не могу сообразить как описать связь для Поля 2 в таблице 2, приведенную на скриншоте, через @JoinColumn
Добрый день, спасибо за ваш вопрос.
Проанализируем ER диаграмму
У вас таблица 1 связана с таблицей 2 связью (таблица 1 ОДНА (может не иметь таблицы2) - таблица 2 МНОГО (если есть то обязательна связана с таблицей 1). Проще всего такие таблицы читать так - где у вас 3 линии собираются ввиде треугольника это значит множество таблиц2 входят в единственную (1 линия) таблицу 1. Важные делали - нолик стоит напротив таблицы1 - значит, что таблица 1 может и не иметь ни одной записи о таблице2, НО сама таблица 2 - обязана иметь ссылку таблицу 1. Это простой вариант отношений сущностей OneToMany
Обдумаем, как она должна быть реализована:
- У нас есть таблица 1 имеет много таблиц2, а таблица 2 обязательно иметь ссылку на таблицу1.
- Из пункта 1 можно сказать, что в таблице 1 просто будет ID (Primary Key / первичный ключ) и все, остальные поля нас не интересуют
- Таблица 2 будет иметь запись
table1_id
которая просто будет показывать к какой таблице1 принадлежит текущая таблица2. То есть этоNOT NULL FOREIGN KEY
на таблицу1. - Если мы заходим для таблицы1 найти и ее все таблицы2, то напишем следующий запрос:
select e from table1 TABLE1_ROW join table2 TABLE2_ROW on TABLE1_ROW.id = TABLE2_ROW.table1_id
Вывод @JoinColumn будет по table1_id
Решение:
1) В сущности Table1:
Будет запись
@OneToMany
@JoinColumn("table1_id")
private List<Table2> ownTables
2) В Table2 будет запись
@ManyToOne
private Table1 owner;
или на вариант “Joinless”
@Column(“table1_id”)
private ID id;