我有一个类似下面的模型(假定为伪代码)
class Student {
@Id
private String id;
private String firstname;
.....;
@DBRef(lazy=true)
private College college
// getters and setters
}
class College {
@Id
private String id;
private String name;
// other attributes.
// getters and setters
}
我正在使用@DBRef(lazy = true),以便不加载与该学生关联的大学。例如:如果我有一个名为findByFirstname(String firstname)的学生存储库方法,则可以在没有大学的情况下加载学生。 但是,有时 我也想给学生上大学。 。是否可以使用@Query批注(org.springframework.data.mongodb.core.query.Query)编写带有自定义查询的存储库方法,我可以在其中加载学生(所有字段)以及相关的大学实例?
@Query( what should go here ?)
Student findStudentWithCollege(String firstname)
如果否,那么按需加载惰性文档的建议方法是什么?
“ DBRef也可以延迟解析。在这种情况下,实际的引用对象或引用集合是在属性的首次访问时解析的。使用@DBRef的lazy属性进行指定。还定义了必需的属性因为延迟加载DBRef和用作构造函数参数的情况也都由延迟加载代理进行了修饰,以确保对数据库和网络施加尽可能小的压力。“我想这可能不适用于需要的情况为每个检索到的学生加载姓氏为“ Smith”的学生以及大学实例。