Проблема наследования объекта-члена в JPA - PullRequest
0 голосов
/ 02 февраля 2020

У меня проблема с использованием JPA. Я задаю вопросы, чтобы получить вашу помощь.

Участник организации делится на два типа:

  1. Пользователи OAuth2
  2. Обычные пользователи (идентификатор, пароль)

Их структура следующая: Структура, которая наследует один абстрактный класс Member для каждого из сферических классов.

Abstract Member Class
ᄂ OAuth2Member
ᄂ GeneralMember

Элемент связан с сущностью, называемой Entity Entity. (1: N)

Item {
    @ManyToOne
    private member;
}

Однако, поскольку тип поля элемента Item - это Member.class, который является абстрактным классом, он ссылается на неизвестную ошибку сущности.

Что следует делать Я делаю в этой ситуации? Я должен разделить сущности General и OAuth2 Member на два класса. Пожалуйста, помогите мне

1 Ответ

1 голос
/ 02 февраля 2020

В этом случае вы можете использовать аннотацию @Inheritance:

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Member {
    // common fields
}

@Entity
public class OAuth2Member extends Member {
    // fields
}

@Entity
public class GeneralMember extends Member {
    // fields
}

И наконец

@Entity
public class Item {
    @ManyToOne
    private Member member;

}

Использование стратегии InheritanceType.SINGLE_TABLE отобразит все подклассы на один и тот же таблица базы данных. Вы можете видеть, какая стратегия подходит вам лучше всего, у разных стратегий есть свои недостатки.

...