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

时间:2018-09-21 06:39:52

标签: spring-data spring-data-mongodb spring-mongodb spring-mongo

我有一个类似下面的模型(假定为伪代码)

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)

如果否,那么按需加载惰性文档的建议方法是什么?

按照documentation

DBRef也可以延迟解析。在这种情况下,实际的引用对象或引用集合是在属性的首次访问时解析的。使用@DBRef的lazy属性进行指定。还定义了必需的属性因为延迟加载DBRef和用作构造函数参数的情况也都由延迟加载代理进行了修饰,以确保对数据库和网络施加尽可能小的压力。“我想这可能不适用于需要的情况为每个检索到的学生加载姓氏为“ Smith”的学生以及大学实例。

0 个答案:

没有答案