Hibernate Mapped Superclass отношения и переопределение - PullRequest
7 голосов
/ 12 июля 2010

У меня есть абстрактный MappedSuperClass, Участник, который расширен тремя видами «Участник». Каждый из них затем использует свой собственный тип «Project», также абстрактный MappedSuperClass. Однако я хочу, чтобы базовый класс знал о проектах, чтобы я мог написать общий код для взаимодействия с участниками. Как мне указать это с помощью аннотаций Hibernate? и как мне переопределить его в классах ExtendedParticipant и ExtendedProject?

Каждый тип участника и каждый тип проекта имеют свои собственные таблицы базы данных с существующими данными и идентификаторами (не уникальными для разных таблиц), которые я не могу изменить.

Следующий код выдает ошибку IDE «Атрибут« многие к одному »не должен быть« Преобразованным суперклассом »».

@MappedSuperclass
public abstract class Participant implements Persistable {

    ...

    @ManyToOne
    @JoinColumn(name = "project_id")
    public Project getProject() {
        return project;
    }

    public void setProject(Project project) {
        this.project = project;
    }

    ...
}

и класс Project во многом совпадает с той же проблемой:

@MappedSuperclass
public abstract class Project implements Persistable {

    ...

    @OneToMany
    public List<Participant> getParticipants() {
        return participants;
    }

    public void setProject(List<Participant> participants) {
        this.participants = participants;
    }

    ...
}

Ответы [ 3 ]

5 голосов
/ 12 июля 2010

Сопоставленный суперкласс не является сущностью, он не может быть частью ассоциации.Поэтому сопоставьте ваши классы как сущности и либо добавьте сопоставленный суперкласс «над ними», либо используйте стратегию TABLE_PER_CLASS.

См. Также

0 голосов
/ 20 марта 2019

Доктора сказали, что это возможно, но суперкласс не является абстрактным в примере https://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html

0 голосов
/ 06 сентября 2012

Кажется возможным определить отношения через сопоставленный суперкласс в соответствии со следующим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...