Всем привет. При регистрации пользователя ему отправляется email с подтверждением через метод sendActiovationEmail. При неудачном выполнении этого метода (например, почтовый сервер недоступен) пользователь все равно должен сохраняться в базу, но с пустым полем activationCode. Проблема в том, что почему-то не сохраняются роли пользователя в связанную таблицу user_roles, поля в таблице user сохраняются нормально. Хотелось бы разобраться в ситуации почему так происходит. При сохранении пользователя вне блока try-catch-finally сохранение происходит нормально. Код сервисного уровня выглядит примерно так:
HashSet<Role> roles = new HashSet<>();
roles.add(Role.USER);
User user = new User(username, password, email, activationCode, false, roles);
try {
sendActivationEmail(email, username, activationCode);
}
catch (MailSendException e){
user.setActivationCode(null);
throw e;
}
finally {
userRepository.save(user);
}
Код Entity User и связи с таблицей user_roles:
@Entity
public class User implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
//...
//Роли:
@ElementCollection(targetClass = Role.class, fetch = FetchType.EAGER)
@CollectionTable(name = "user_role", joinColumns = @JoinColumn(name =
"user_id"))
@Enumerated(EnumType.STRING)
private Set<Role> roles;
//...
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Вот пример C++ кода, который выглядит очень странноПочему-то, когда данные отсортированы код выполняется почти в шесть раз быстрее
Вопрос из любопытства, почему данные в экземпляре FormData не видны при выводе в консоль, но при этом они видны во вкладке Network? Вывод в консоль...
Есть массив (точнее объект), как изменить кодировку его элементов из CP1251 в UTF8?
Столкнулся с проблемой повторной загрузки ресурсов в iOS (iPhone 7)Разрабатываю большое SPA приложение, с предзагрузкой ресурсов(изобр