JPA 属性 表达式与使用 'In'

JPA Property Expressions Vs Using 'In'

我有 3 个 类:

大学:
id, name, ....

学生:
id, name, college, ....

标记:
id, subject, student

我有 collegeObjectstudents 的列表。我可以通过两种方式查询学生的分数:

JPA 属性 表达式:
List<Marks> findByStudentCollege(College college)

在查询中使用
List<Marks> findByStudentIn(Set<Student> studentList)

我需要帮助来了解从性能角度来看哪个查询更适合使用。

你应该尝试findByStudentCollegeId,这比传递整个对象进行查询要好

您正在执行两个不同的查询:

findByStudentCollege(College college) :这将用于在 "college" 中的每个元素 "student" 中查找大学的标记。您没有在标记和大学之间建立联系,因此您可能会执行类似“select * from marks where student = (Select id from Student where college = (select 来自学院) )

findByStudentIn(Set studentList) :这个将用于查找列表中的标记(0 个或多个 "student" 元素,因此您需要先列出学生,或使用它来查找重点关注一名学生的分数。

如果您没有完整的学生名单,第二个可能是最佳选择。如果你让一所大学的所有学生都使用第一个,因为你正在避免第一个学生列表。

无论如何,您不会看到这些查询之间的区别,即使您正在处理 5k+ 行