gpt4 book ai didi

java - 限制 JPA 规范查询以获取所需数据

转载 作者:行者123 更新时间:2023-12-01 16:46:55 24 4
gpt4 key购买 nike

我有 3 张 table :

School
school_id, school_name, student_id
Student
student_id, student_name ,subject_id
Subject
subject_id, subject_name

学校 -> 学生 -> 科目之间存在一对多关系,我仅在该关系中创建了实体。

我正在编写规范查询来获取特定学校的学生:

List<Student> students = schoolRepo.findAll(Specification.where (findStudents(schoolId));
<小时/>
public static Specification<Student> findStudents(long schoolId) {
return (root, query, cbuilder) -> {
root.fetch("students", JoinType.LEFT);
return cbuilder.and(cbuilder.equal(root.get("school"), schoolId));
};
}

尽管我没有在规范查询或代码中的任何位置获取主题(例如使用 get)。

我仍然可以在生成的查询日志中看到主题最终被获取。

如何更新我的查询以仅限于学校和学生?

请提出建议。

最佳答案

您可以尝试改用EntityGraph。它有助于提高加载实体的性能。你可以这样做

@Entity
@NamedEntityGraph (
name="school-students",
attributeNodes = {
@NamedAttributeNode("students")
}
)
public class School implements Serializable { ... }


And then in your repository use it like this :

@Override
@EntityGraph(value = "school-students",
type = EntityGraph.EntityGraphType.FETCH)
@Query( value = "SELECT s FROM School s where s.id =:id")
School findOne();

关于java - 限制 JPA 规范查询以获取所需数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61753697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com