猿问

JPA 属性表达式与使用“In”

我有3个班级:

学院:
id, name, ....

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

标记
id, subject, student

我有大学对象学生名单。我可以通过两种方式查询学生的分数:

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

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

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


www说
浏览 337回答 3
3回答

缥缈止盈

您正在执行两个不同的查询:findByStudentCollege(College College) :这个将用于在“college”中的每个元素“student”中查找学院的标记。您没有在标记和大学之间建立联系,因此您可能会执行类似“从学生标记中选择 * 的查询 =(从学生中选择 id,其中大学 =(从大学中选择))findByStudentIn(Set studentList) : 这将用于查找列表中的分数(0 个或多个“学生”元素,因此您需要先列出学生,或者使用它来查找焦点中的一个学生的分数。如果您没有完整的学生名单,第二个可能是最好的选择。如果您有大学的所有学生,请使用第一个,因为您避免了第一个学生列表。无论如何,您不会看到这些查询之间的差异,即使您正在处理 5k+ 行

一只名叫tom的猫

你应该尝试findByStudentCollegeId,这比传递整个对象进行查询要好
随时随地看视频慕课网APP

相关分类

Java
我要回答