Spring JPA Как правильно обратиться к таблице?
У сайта есть несколько ролей: user, doctor, admin. Данные всех пользователей (логин, пароль, активность) хранятся в одной таблице user, но user_id и role типа enum связываются в таблице users_role
Если пользователь имеет роль doctor, то на основе user_id аккаунта нужно связать с таблицей doctor, где хранятся данные о дате приема на работу, специальность и т.п.. (Далее планировалось: если пользователь имеет роль user, то связь c таблицей visits)
Реализована таблица с персональными данными(Personal), но они есть у каждого пользователя вне зависимости от роли. А тут могу понять, как мне сделать разграничение аккаунтов на таблицы doctor и visit по user_id, обращаясь к таблице users_role?
Класс User
@Entity
@Table(name ="users")
@Data
public class User implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "login", nullable = false, unique = true, length = 20)
private String username;
@Column(name = "password", nullable = false, length = 1000)
private String password;
@Column(name = "active")
private boolean active;
@ElementCollection(targetClass = Role.class, fetch = FetchType.EAGER)
@CollectionTable(name = "user_role",
joinColumns = @JoinColumn(name = "user_id"))
@Enumerated(EnumType.STRING)
private Set<Role> role = new HashSet<>();
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "user")
private Personal personal;
//???
private Doctor doctor;
}
Класс Doctor
@Entity
@Table(name ="doctors")
public class Doctor {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
}
Enum Role
public enum Role implements GrantedAuthority {
USER, DOCTOR, ADMIN;
@Override
public String getAuthority() {
return name();
}
}
