У меня есть база данных PostgreSQL с несколькими схемами, и я использую Apache Cayenne для генерации классов Java.Проблема в том, что cayenne пропускает внешние ключи для таблиц в разных схемах.Пример:
Таблица schema_b.booking
, которая ссылается на schema_a.my_user
:
create table schema_b.booking
(
id bigserial not null constraint booking_pkey primary key,
address_id integer not null constraint cde_fk references schema_b.address
...,
created_by integer not null constraint abc_fk references schema_a.my_user
);
Сгенерированный класс Java выглядит следующим образом:
class Booking {
private Long id;
private Address addressId; //this is OK
private Integer createdBy; //NOT OK (Integer instead of MyUser)
}
Журнал консоли показывает эту запись для каждого FKв другой схеме:
[INFO] Skip relation: 'null.schema_a.my_user.id <- null.schema_b.booking.created_by # 1' because it related to objects from other catalog/schema
[INFO] relation primary key: 'null.schema_a'
[INFO] primary key entity: 'null.schema_a'
[INFO] relation foreign key: 'null.schema_b'
[INFO] foreign key entity: 'null.schema_b'
Проблема в том, что Booking#createdBy
не MyUser
.
Я искал в SO и официальной документации, но безуспешно.Есть ли способ добиться этого?Я знаю, что другой вариант - переместить все таблицы в одну схему, но это почти невозможно для нашего проекта.