Наша база данных PostgreSQL насчитывает более 200 таблиц, и мы хотели попробовать "Обратный инжиниринг" Hibernate, чтобы избежать написания всех VO и / или классов сущностей вручную .
Однако у нас есть несколько необычных внешних ключей в нашей базе данных, и я хотел понять, как Hibernate моделирует, прежде чем прыгать в неизвестность. Вот пример, который показывает «разветвленный внешний ключ» (преувеличенный для воздействия), который, я думаю, хорошо подходит для описания случая, с которым мы сталкиваемся:
create table person (
id int primary key not null,
sid int not null unique,
name varchar(30)
);
insert into person (id, sid, name) values
(1, 3, 'Victor'),
(2, 4, 'Juliett'),
(3, 5, 'Oscar'),
(4, 1, 'Romeo'),
(5, 2, 'Mike');
create table applicant (
id int primary key not null,
sid int not null unique,
referrer_id int not null, -- THIS IS THE FORKING FOREIGN KEY!
foreign key (referrer_id) references applicant (id), -- fk #1
foreign key (referrer_id) references applicant (sid), -- fk #2
foreign key (referrer_id) references person (id), -- fk #3
foreign key (referrer_id) references person (sid), -- fk #4
friend_id int not null,
foreign key (friend_id) references applicant (id) -- fk #5
);
insert into applicant (id, sid, referrer_id, friend_id) values
(1, 2, 3, 5),
(2, 5, 1, 3),
(3, 4, 5, 2),
(4, 1, 1, 4),
(5, 3, 2, 3);
Поскольку referrer_id
в таблице applicant
указывает на четыре разных места ... как Hibernate моделирует этот разветвление FK, в то время как реверс-инжиниринг его?
Будет ли он создавать четыре отдельных свойства, по одному для каждого родителя? Или, может быть, четыре отдельных метода, по одному для каждого родителя?