@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long id;
@Column(name = "roll_no", nullable = false)
private long rollNo;
@Column(name = "enrollment_no", nullable = false, unique = true)
private String enrollmentNo;
}
@Entity
@Table(name = "subject")
public class Subject {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long id;
@Column(name = "subject_code", nullable = false, unique = true)
private String code;// course code
}
我有以上两门课。 我想为下面的数据库表创建一个 StudentMarks 类 Student_marks(student_id,marks_id,marks,passing_status);
我试过这个
@Embeddable
public class StudentMarksId implements Serializable {
private Long studentId;
private Long subjected;
//getter and setter
}
@Entity
@Table(name = "student_marks")
public class StudentMarks implements Serializable {
private static final long serialVersionUID = 4428298147790767663L;
@EmbeddedId
@Id
@JoinColumns({
@JoinColumn(name = "subject_id", referencedColumnName = "id"),
@JoinColumn(name = "student_id", referencedColumnName = "id") })
private StudentMarksId id;
private List<Subject> subjects;
private List<Student> students;
@Column(name = "marks", nullable = false)
private int marks;
@Column(name = "passing_status", nullable = false)
private String passingStatus;// pass or fail
}```
I want to map student and subjects to student_marks.
有几种方法可以绘制此图。一是:
public class StudentMarksId implements Serializable {
private Long studentId;
private Long subjected;
//getter and setter
}
@Entity
@Table(name = "student_marks")
@IdClass(StudentMarksId.class)
public class StudentMarks implements Serializable {
private static final long serialVersionUID = 4428298147790767663L;
@Id
@ManyToOne
@JoinColumn(name = "subject_id", referencedColumnName = "id")
private Subject subject;
@Id
@ManyToOne
@JoinColumn(name = "student_id", referencedColumnName = "id")
private Student student;
@Column(name = "marks", nullable = false)
private int marks;
@Column(name = "passing_status", nullable = false)
private String passingStatus;// pass or fail
}
另一种可能是将 StudentMarksId 映射为实体中的可嵌入项:
@Embeddable
public class StudentMarksId implements Serializable {
private Long studentId;
private Long subjected;
//getter and setter
}
@Entity
@Table(name = "student_marks")
@IdClass(StudentMarksId.class)
public class StudentMarks implements Serializable {
private static final long serialVersionUID = 4428298147790767663L;
@EmbeddedId
private StudentMarksId id;
@MapsId("subjected")
@ManyToOne
@JoinColumn(name = "subject_id", referencedColumnName = "id")
private Subject subjects;
@MapsId("studentId")
@ManyToOne
@JoinColumn(name = "student_id", referencedColumnName = "id")
private Student student;
@Column(name = "marks", nullable = false)
private int marks;
@Column(name = "passing_status", nullable = false)
private String passingStatus;// pass or fail
}