Замаппить объекты в Java JPA

158
15 февраля 2018, 14:50

Имеется следующая структура БД 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 использовать для реализации задуманного.

READ ALSO
Проверки электронной подписи ЕСИА openId

Проверки электронной подписи ЕСИА openId

Добрый день! Пишу интеграцию с есиа по opendid connect на javaНазрел вопрос по проверки подписи маркера доступа/идентификации

194
Как получить дату изменения каталога в Java

Как получить дату изменения каталога в Java

Как в Java получить FolderlastModified()? Вариант рекурсивного просмотра каталога в глубину и взятие даты последнего файла не подходит, так как каталог...

160
firebird embedded Java

firebird embedded Java

Как указать относительный путь для embedded Firebird? Вот так не работает: jdbc:firebirdsql://localhost/examfdb

175