Tôi có dưới 1 m mối quan hệ trên các thực thể mà Cố vấn cho học sinh. Người cố vấn có khóa chính kết hợp mà tôi sử dụng làm khóa ngoài trong học sinhPersist 1-m thực thể với khóa chính composite trong hibernate
@Entity
public class Mentor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private MentorPK id;
private String email;
@OneToMany(mappedBy="mentor")
private Set<Student> students;
public MentorPK getId() {
return id;
}
//getters and setters
}
@Embeddable
public class MentorPK implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String add;
//getters and setters
//override equals and hashcode
}
@Entity
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String name;
@ManyToOne
@MapsId("id")
@JoinColumns({
@JoinColumn(name="name_fk", referencedColumnName="name"),
@JoinColumn(name="address_fk", referencedColumnName="address")
})
private Mentor mentor;
//Getters and setters
}
Tôi sau đó vẫn tồn tại ở trên nhưng chỉ người cố vấn được duy trì ở nơi bảng học sinh trống.
Làm cách nào để tôi có thể tiếp tục cố vấn với sinh viên?
Set<Student> students = new HashSet<Student>();
Student s1 = new Student();
s1.setName("Student 1");
Student s2 = new Student();
s2.setName("Student 2");
students.add(s1);
students.add(s2);
MentorPK mpk = new MentorPK();
mpk.setAddress("C");
mpk.setName("D");
Mentor m = new Mentor();
m.setId(mpk);
m.setEmail("emaill");
m.setStudents(students);
studentManager.saveMentor(m);
Có lẽ đây thực sự là vấn đề với việc tạo khóa chính Id của Học sinh tự động. Bạn có thể tạo học sinh không có cố vấn không? – DuncanKinnear
@DuncanKinnear yes tôi có thể – Harshana