小编Tam*_*ams的帖子

Spring Mongo DB @DBRef(lazy=true) - 如何延迟加载

我有一个像下面这样的模型(假设为伪代码)

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 并使用因为构造函数参数也用延迟加载代理装饰,确保尽可能少地对数据库和网络施加压力。 ”我想这可能不适合加载姓氏为“史密斯”的学生的情况。 "以及检索到的每个学生的大学实例。

spring-data spring-mongo spring-data-mongodb spring-mongodb

9
推荐指数
0
解决办法
2559
查看次数