Я хочу сохранить сущность. Поэтому я сохраняю (entity) и, когда возникает исключение, я пытаюсь сохранить (entity) после delete ().
Однако, поскольку был отображен оператор don't flush the session after an exception
и запрос на исключение не был выполнен, распространение было установлено, как показано ниже.
@Service
@RequiredArgsConstructor
@Transactional
public class UserService {
private final UserRepository userRepository;
@Transactional(TxType.SUPPORTS)
public String saveIfPossibleElseDeleteAndSave(final String name){
final User user = User.builder()
.age(0)
.name(name)
.gender(User.Gender.MAN)
.build();
try{
userRepository.save(user);
return "SAVE";
} catch(RuntimeException e){
userRepository.deleteOneLimit1();
userRepository.save(user);
return "DELETE AND SAVE";
}
}
}
Выше сделано. Вопрос в том, есть ли что-нибудь, что могло бы быть проблемой, когда метод выполняется много раз в секунду?
Кроме того, есть ли другой способ, кроме приведенного выше кода?
edit
Если выполняется save () и возникает ошибка, синтаксис печатается. java.sql.SQLException: The table 'users' is full
Таблица пользователей является таблицей памяти, поэтому, если она заполнена, удалите ее и сохраните снова.