【发布时间】:2016-08-24 03:38:51
【问题描述】:
我是 Hibernate 的新手,由于需要额外的列,我正试图弄清楚如何查询映射为实体的多对多关系。
特别是,按照我在 codejava.net (http://www.codejava.net/frameworks/hibernate/hibernate-many-to-many-association-with-extra-columns-in-join-table-example) 上找到的示例,我将关系映射如下:
学生.java
@Entity
public class Student implements Serializable {
@Id
@Column
private String email;
@Column(nullable = false)
private String password;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String surname;
// Constructor, getters, setters, hashcode, equals
}
课程.java
@Entity
@Table(
uniqueConstraints = @UniqueConstraint(
columnNames {"name","year"})
)
public class Course implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private long id;
@Column
private String name;
@Column
private String year;
@OneToMany(mappedBy = "course")
private Set<Student_Course> students = new LinkedHashSet<>();
// Constructor, getters, setters, hashcode, equals
}
Student_Course.java
@Entity
public class Student_Course implements Serializable {
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Column
private long id;
@ManyToOne
@JoinColumn(name = "student_email")
private Student student;
@ManyToOne
@JoinColumn(name = "course_id")
private Course course;
@Column(nullable = false,
columnDefinition = "int default 0")
private int score;
// Constructor, getters, setters, hashcode, equals
}
现在我想要实现的是通过 hql 查询找出参加给定课程的学生的姓名和姓氏(我知道课程的名称和年份)。 我知道这可能很容易,但我无法在 HQL 中生成有效的查询。
提前谢谢你。
【问题讨论】: