我有一班学生
class StudentClass {
String name
static hasMany = [students: Student]
}
和学生
class Student {
String name
}
学生可以上任意数量的班级。
我如何根据学生姓名列表编写查询,例如 ['Tom', 'Angelika', 'Timmy'],它为我提供了所有 StudentClass 对象的列表,其中学生列出了搜索列表中存在的每个学生。
提前我真正想做的事情是:获取一个班级列表,其中搜索列表中至少有一个名字在学生列表中,并根据搜索列表中的学生数量对该列表进行排序,这些学生在该列表中。
我在这个问题上坐了很长时间:/我不知道这是否应该通过使用 HQL 来完成。任何建议都会很好
编辑:所以这是一个示例,我想获得以下对象的查询结果作为数据库中保存的以下对象(对于一个更简单的示例,我只使用学生的姓名而不是具有名称属性的学生对象)
StudentClass(name: 'Physics', students: ['Timmy', 'Herbert', 'Christian', 'Martha'])
StudentClass(name: 'Economics', students: ['Franz', 'Paul', 'Joseph'])
StudentClass(name: 'Sports', students: ['Timmy', 'Angelika', 'Christian', 'Jasmine'])
StudentClass(name: 'Math', students: ['Tom', 'Emelie', 'Angelika', 'Timmy'])
这 4 个学生类在数据库中是持久的。
现在我想查询包含至少一个列表中给出的学生的所有学生课程。该搜索列表可以例如包含['Tom'、'Angelika'、'Timmy']。在这种情况下,结果应按搜索列表中实际在该班级的学生人数排序:
- 数学 - 他们三个都在那个班
- 体育 - 搜索列表中有 2 名学生在体育课
- 物理 - 1 名学生在上物理课
经济学课程不能返回,因为搜索列表中的学生都不是该课程的学生。
我阅读了有关Hibernate Documentation的整个文档,我认为“一些”和“元素”在这里可以帮助我,但我的问题是排序和搜索词的数量可变。