Имеется следующая структура БД PostgreSQL:
CREATE TABLE a_type (
id INT4 PRIMARY KEY
);
CREATE TABLE a (
id INT8 PRIMARY KEY,
a_type_id INT4 NOT NULL REFERENCES a_type (id)
);
CREATE TABLE b_type (
id INT4 PRIMARY KEY
);
CREATE TABLE b (
id INT8 PRIMARY KEY,
b_type_id INT4 NOT NULL REFERENCES b_type (id)
);
CREATE TABLE c (
id INT8 PRIMARY KEY NOT NULL REFERENCES a_type (id) REFERENCES b_type (id)
);
Хотелось бы замаппить на доменные объекты в Java:
@Entity
interface A {
@Id
Long id;
@ManyToOne
@JoinColumn
AType aType;
}
@Entity
class AType {
@Id
Integer id;
}
@Entity
interface B {
@Id
Long id;
@ManyToOne
@JoinColumn
BType bType;
}
@Entity
class BType {
@Id
Integer id;
}
@Entity
class C implements A, B {
@Id
Long id;
@ManyToOne
@JoinColumn
AType aType;
@ManyToOne
@JoinColumn
BType bType;
}
Чтобы в Spring CRUD Repository можно было создать и использовать следующие репозитории:
interface ARepository extends CrudRepository<A, Long> {
}
interface BRepository extends CrudRepository<B, Long> {
}
interface CRepository extends CrudRepository<C, Long> {
}
То есть если существует в БД строка в таблице c, то с таким же ID существуют объекты в таблицах a и b.
Прошу подсказать в какую сторону смотреть, чтобы разобраться с тем какие аннотации JPA использовать для реализации задуманного.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники