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();
    }
}

Ответы (0 шт):