У меня есть модель, подобная приведенной ниже (предположим, что это псевдокод)
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 иаргументы, используемые в качестве конструктора, также украшены ленивым загрузочным прокси-сервером, обеспечивающим минимальное давление на базу данных и сеть, насколько это возможно."Я думаю, это может не подходить для случаев, когда нужно загрузить студента, последнийимя «Смит» вместе с экземпляром колледжа для каждого из найденных студентов.