JPA наследование без общих полей - PullRequest
0 голосов
/ 20 января 2020

Итак, я хочу реализовать существующую структуру DB моей прежней системы, но есть некоторые проблемы.

У меня есть три таблицы: A, B и C. A содержит строку nr, которая указывает на запись либо B, либо C. Проблема в том, что первичный ключ B - это nr_b, а первичный ключ C - nr_c.

. У меня есть приложение с пружинной загрузкой, за которым стоит DB postgres.

Вот что я попробовал:

@Entity
class A {
    ...

    @Column(name="nr")
    private SuperBC item;

    ...
}

@MappedSuperClass
abstract class SuperBC {

    abstract Long getId();
    abstract void setId(Long id);
}

@Entity
class B extends SuperBC {

    @Id
    @Column(name = "nr_b")
    private Long id;

    ...
}

@Entity
class C extends SuperBC {

    @Id
    @Column(name = "nr_c")
    private Long id;

    ...
}

Это не работает, потому что вы не можете иметь поле, помеченное @MappedSuperClass. Я также попытался поставить @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) вместо @MappedSuperclass, но затем я должен также пометить SuperBC с помощью @Entity, и мне нужно создать поле с пометкой @Id, которого нет в моей БД.

Можно ли вручную написать отображение для класса A в entityManager?

Спасибо, ребята!

...