【发布时间】:2011-12-15 11:38:24
【问题描述】:
假设我有一个这样的 Student 实体,使用 Play Framework 的 Model 类实现:
@Entity
public class Student extends Model {
public String name;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "student_subject",
joinColumns = {@JoinColumn(name = "student_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "subject_id", referencedColumnName = "id")})
public List<Subject> subjects;
...
}
一个主题看起来像这样:
@Entity
public class Subject extends Model {
public String name;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "student_subject",
joinColumns = {@JoinColumn(name = "subject_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "student_id", referencedColumnName = "id")})
public List<Student> students;
...
}
有没有简单的方法使用 Play! (如果没有,最好的方法是什么)找到与特定学生至少有一个学科共同点的所有学生?
那么让我们说:
- 学生 A 学习数学、科学和英语
- 学生 B 学习科学和英语
- 学生 C 会法语
- 学生 D 学习数学和法语
我希望做这样简单的事情:
List<Student> students = Student.find("subjects in ? and id <> ?", studentA.subjects, studentA.id).fetch();
我希望返回两个学生:B 和 D(因为学生 B 和 D 至少有一个与学生 A 相同的科目,通过上面的查询传入)。
【问题讨论】:
标签: java sql jpa playframework