SpringBoot Mongorepository не сохраняет должным образом набор атрибутов сущности

#mongodb #spring-boot #hibernate #jpa #mongorepository

Вопрос:

Я использую Spring Boot и spring-data-mongodb (2.2.3) для хранения коллекции студентов, у которых есть хобби.
Я пытаюсь добавить хобби в набор увлечений студенческой организации и сохранить студента( у студента может быть 100 тыс. увлечений, которые добавляются довольно быстро.

 @Data
@Document(collection = "students")
public class Student {
    @Id
    String id;
    @DBRef
    Set<Hobby> hobbies;
}

@Data
@Document(collection = "hobbies")
public class Hobby {
    @Id
    String id;
    String hobby;
    public Hobby(String hobby) {
        this.id = UUID.randomUUID().toString();
        this.hobby = hobby;
    }
}
 

Я пытаюсь добавить хобби студенту и сохранить студента следующим образом:

 Student student = studentRepo.findById(studentId);
    Hobby hobby = new Hobby(hobbyString);
    student.hobbies.add(hobby);
    studentRepo.save(student);
 

Но в следующем запросе я не получаю все добавленные хобби (я вижу, что не все хобби присутствуют в студенческом документе в монго). Я предполагаю, что это происходит из-за того, что разные потоки загрузки Spring получают доступ к этому коду. Как я могу гарантировать, что набор будет правильно сохранен?
В настоящее время я могу добавить синхронизированную функцию, но это не очень хорошее решение с точки зрения производительности.
Я попытался сохранить хобби в виде набора строк, коллекции элементов и DBRef, но получил тот же результат.