У меня есть человек абстрактного класса и классы, которые наследуются от этого класса. Теперь этот человек должен получить роль в локации. Роль и местоположение - это отдельные классы.
Я создал класс с именем 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;