Spring Mongo DB @DBRef (lazy = true) - Как лениво Загрузить - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть модель, подобная приведенной ниже (предположим, что это псевдокод)

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), чтобы не загружать колледж, связанный со студентом.Например: если у меня есть метод репозитория для Student с именем findByFirstname (String firstname), я могу загрузить студента без колледжа.Однако время от времени Я также хотел бы загрузить студента колледжем .Можно ли написать метод репозитория с пользовательским запросом, используя аннотацию @Query (org.springframework.data.mongodb.core.query.Query), где я могу загрузить студента (все поля), а также связанный экземпляр колледжа?

@Query( what should go here ?) 
Student findStudentWithCollege(String firstname)

Если нет, то каков будет предложенный способ загрузки отложенных документов по требованию?

Согласно документации

" DBRef также могут быть разрешены лениво. В этом случае фактический объект или коллекция ссылок разрешаются при первом доступе к свойству. Используйте для этого ленивый атрибут @DBRef. Обязательные свойства, которые также определяются как отложенная загрузка DBRef иаргументы, используемые в качестве конструктора, также украшены ленивым загрузочным прокси-сервером, обеспечивающим минимальное давление на базу данных и сеть, насколько это возможно."Я думаю, это может не подходить для случаев, когда нужно загрузить студента, последнийимя «Смит» вместе с экземпляром колледжа для каждого из найденных студентов.

...