У меня есть класс User
:
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class User implements UserDetails {
@Id
@GeneratedValue
Long id;
@NotBlank
private String name;
@NotBlank
private String password;
private List<String> roles = new ArrayList<>();
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return this.roles.stream().map(SimpleGrantedAuthority::new).collect(toList());
}
@Override
public String getUsername() {
return null;
}
@Override
public boolean isAccountNonExpired() {
return false;
}
@Override
public boolean isAccountNonLocked() {
return false;
}
@Override
public boolean isCredentialsNonExpired() {
return false;
}
@Override
public boolean isEnabled() {
return false;
}
}
, который моделирует учетную запись пользователя, которая может быть для Student
или Teacher
. Они могут владеть только одной учетной записью, поэтому, чтобы указать эту связь, я решил смоделировать ее с помощью отношения @OneToOne, но мне трудно понять, было бы хорошей идеей сделать это однонаправленным.
Кроме того, * Класс 1009 * может относиться как к Student
, так и к Teacher
по logi c, что, если мне нужно получить данные пользователя, начиная с его учетной записи User
? Насколько я понимаю, я должен создать двунаправленную связь, но какую сущность мне нужно поместить в класс User
?