public class User {
@Id
private String user_id;
private String email;
private String password;
@Getter
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
name = "user_roles",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "role_id")
)
@JsonManagedReference(value = "users")
private Set<Role> roles;
}
public class Role {
@Id
private String role_id;
private String name;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "roles")
@JsonBackReference(value = "roles")
private Set<User> users;
}
public class Student {
@Id
@OneToOne
private User student_id;
private String name;
private String email;
private String phone;
private String address;
}
想要映射与学生和用户的一对一关系。但只是从学生端,而不是从用户端。 User 中没有 Student 类型的字段,但 Student 中没有 User 类型的字段。每当我将学生添加到数据库时,该用户应该自动添加到用户表中。
可以吗?
你可以在你的服务中这样做
User user = new User();
// Call setter to fill fields
Student student = new Student();
student.setUser(user);
// Call setter to fill other fields
userRepository.save(user);
studentRepository.save(student);
据我所知,您需要先保存用户,然后才能保存引用用户的学生。如果需要,您可以为此创建一个辅助方法。