关系:成绩与考试多对一,成绩与学生多对一,学生与班级多对一.
需求:要根据考试id和班级id查询学生成绩.
Score
@Entity public class Score { private int id; private Student student; private Exam exam; private int score; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public int getId() { return id; } public void setId(int id) { this.id = id; } @ManyToOne @JoinColumn(name = "studentid", referencedColumnName = "id") public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } @ManyToOne @JoinColumn(name = "examid", referencedColumnName = "id") public Exam getExam() { return exam; } public void setExam(Exam exam) { this.exam = exam; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } }
Student
private int id; private Grade grade; private String name; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public int getId() { return id; } public void setId(int id) { this.id = id; } @ManyToOne @JoinColumn(name = "gradeid", referencedColumnName = "id") public Grade getGrade() { return grade; } public void setGrade(Grade grade) { this.grade = grade; } public String getName() { return name; } public void setName(String name) { this.name = name; }
Exam和Grade略
下面是查询代码.
ScoreDao:
@SuppressWarnings("unchecked") public List<Score> getList(int examid, int gradeid) { Criteria c = getSession().createCriteria(Score.class); c.setFetchMode("exam", FetchMode.JOIN); c.add(Restrictions.eq("exam.id", examid)); c.createAlias("student.grade", "grade"); c.add(Restrictions.eq("grade.id", gradeid)); return c.list(); }
转自:http://www.verydemo.com/demo_c146_i2502.html