У меня есть следующие объекты: DocumentType, UserGroup, User
DocumentType.java имеет @ManyToMany Набор UserGroup:
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name = "review_type", joinColumns = @JoinColumn(name="doc_type"),
inverseJoinColumns = @JoinColumn(name="user_group_id") )
private Set<UserGroup> reviewUserGroups;
UserGroup.Java имеет @ManyToMany Набор пользователя:
@ManyToMany
@JoinTable(name = "group_users", joinColumns = @JoinColumn(name = "group_id"),
inverseJoinColumns = @JoinColumn(name = "user_id"))
private Set<User> users;
Что я хочу сделать, чтобы реализовать этот код:
@Transactional
private void createDocuments(int avgDocsPerUser) {
List<DocumentType> documentTypes = documentTypeRepository.findAll();
int documentTypesCount = documentTypes.size();
List<User> users = userRepository.findAll().stream().filter(user -> !user.isAdmin()).collect(Collectors.toList());
int usersCount = users.size();
int documentsToCreate = (int) Math.floor(Math.random() * (usersCount * avgDocsPerUser)) + 1;
List<Document> documentList = new ArrayList<>();
while (documentList.size() < documentsToCreate) {
DocumentType documentType = documentTypes.get((int) Math.floor(Math.random() * documentTypesCount));
User user = documentType
.getSubmissionUserGroups()
.stream().findAny()
.get().getUsers()
.stream().findAny().get();
// create new document here and add User info to it
}
documentRepository.saveAll(documentList);
}
Проблема, которую я продолжаю получать ошибку:
Вызвано: org.hibernate.LazyInitializationException: не удалось лениво инициализировать коллекцию ролей: it.akademija.wizards.entities.DocumentType.submissionUserGroups, не удалось инициализировать прокси - нет Session
Я хочу избежать загрузки EAGER.Как реализовать этот код, чтобы я мог случайным образом получить пользователя, который является частью UserGroup, которая является частью SubmissionUserGroups в объекте DocumentType.