Hibernate, внешний ключ на две таблицы
У меня есть две сущности: покупатель и продавец, обе наследуются от супер класса персона. Так же есть сущность "счет", ее необходимо связать персоной. Но покупатель и продавец, это разные таблицы в БД. И не совсем пониманию как создать связь в Postgress, в которой одно поле может ссылаться на разные таблицы (либо продавец либо покупатель).
Да можно создать разные таблицы для счетов клиента и покупателя, но на мой взгляд, это не совсем корректно.
Зы, спасибо (и да я знаю что я нуб)
Ответы (1 шт):
Не какой внешний ключ на 2 таблицы вам не нужен, вам нужно сделать наследование таблиц где будет базовая сущность с набором общих полей и наследники которые будут ссылаться на базовую сущность с помощью foreign key и тогда дополнительная таблица в вашем случае счет будет ссылаться на базовую таблицу.
Пример.
create table person
(
id integer not null
constraint person_pk
primary key
);
create table buyer
(
id integer not null
constraint buyer_pkey
primary key
constraint buyer_person_id_fk
references person
);
create table seller
(
id integer not null
constraint seller_pk
primary key
constraint seller_person_id_fk
references person
);
create table account
(
id integer not null
constraint account_pk
primary key,
person_id integer not null
references person
);
Советую вам прочитать про аннотацию @Inheritance в hibernate она вам позволит управлять таблицами на уровни orm.