У меня есть базовое приложение SpringBoot 2.0.4.RELEASE. используя Spring Initializer, JPA, встроенный Tomcat, шаблонизатор Thymeleaf и пакет в качестве исполняемого файла JAR.
У меня есть этот метод:
@Transactional
public User createUser(User user, Set<UserRole> userRoles) {
User localUser = userRepository.findByEmail(user.getEmail());
if (localUser != null) {
LOG.info("User with username {} and email {} already exist. Nothing will be done. ",
user.getUsername(), user.getEmail());
} else {
String encryptedPassword = passwordEncoder.encode(user.getPassword());
user.setPassword(encryptedPassword);
for (UserRole ur : userRoles) {
LOG.info("Saving role " + ur);
roleRepository.save(ur.getRole());
}
user.getUserRoles().addAll(userRoles);
localUser = userRepository.save(user);
}
return localUser;
}
но когда я создаю пользователя:
User user = new User();
Set<UserRole> userRoles = new HashSet<>();
userRoles.add(new UserRole(user, new Role(RolesEnum.ADMIN)));
userService.createUser(user, userRoles);
Я получил эту ошибку:
object references an unsaved transient instance - save the transient instance before flushing : com.tdk.backend.persistence.domain.backend.UserRole.role -> com.tdk.backend.persistence.domain.backend.Role