Абстрактный класс как внешний ключ в отображаемой таблице - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть человек абстрактного класса и классы, которые наследуются от этого класса. Теперь этот человек должен получить роль в локации. Роль и местоположение - это отдельные классы.

Я создал класс с именем MappedRole. Здесь роль, местоположение и личность сопоставлены. Роль и местоположение отлично работают и также создаются в базе данных как внешний ключ. Однако я не знаю, как сохранить идентификатор человека подклассов с помощью JPA.

Это мой класс MappedRole:

@Entity
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "PERSON_ID", "STANDORT_ID", "ROLE_ID" }) }, name = "mappedrole")
@NamedQueries({ @NamedQuery(name = "mappedRole.checkIfUserExist", query = "SELECT count(mr.role) FROM MappedRole mr WHERE mr.role =?1") })
public class MappedRole implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @ManyToOne(cascade = { CascadeType.REMOVE }, fetch = FetchType.EAGER)
    @JoinColumn(name = "PERSON_ID", nullable = false)
    private Person person;

    @ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REMOVE, CascadeType.REFRESH }, fetch = FetchType.EAGER)
    @JoinColumn(name = "ROLE_ID")
    private Role role;

и это в моем классе Standort:

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
    @JoinColumn(name = "USER_ID", referencedColumnName = "id")
    private Set<MappedRole> mappedRoles = new HashSet<MappedRole>();

и это в моем классе личности:

    @OneToMany(cascade = { CascadeType.MERGE, CascadeType.REMOVE, CascadeType.REFRESH }, orphanRemoval = true, fetch = FetchType.LAZY)
    @JoinColumn(name = "PERSON_ID")
    private Set<MappedRole> mappedRole;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...