我有一个像下面这样的模型(假设为伪代码)
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
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 @DBRef(lazy=true) 以便我不会加载与学生关联的大学。例如:如果我有一个名为 findByFirstname(String firstname) 的 Student 存储库方法,我可以在没有大学的情况下加载学生。但是,有时 我也想为学生加载大学。是否可以使用@Query 注释(org.springframework.data.mongodb.core.query.Query)编写带有自定义查询的存储库方法,我可以在其中加载学生(所有字段)以及相关的大学实例?
@Query( what should go here ?)
Student findStudentWithCollege(String firstname)
Run Code Online (Sandbox Code Playgroud)
如果不是,那么按需加载惰性文档的建议方法是什么?
根据文档
" DBRefs 也可以延迟解析。在这种情况下,实际对象或引用集合在第一次访问属性时解析。使用 @DBRef 的惰性属性来指定这一点。必需的属性也定义为延迟加载 DBRef 并使用因为构造函数参数也用延迟加载代理装饰,确保尽可能少地对数据库和网络施加压力。 ”我想这可能不适合加载姓氏为“史密斯”的学生的情况。 "以及检索到的每个学生的大学实例。