Способ сделать это с помощью Spring Data JDBC - зарегистрировать BeforeSaveEvent
ApplicationListener
, который создает идентификатор и устанавливает его в сущности.
@Bean
public ApplicationListener<BeforeSaveEvent> idSetting() {
return event -> {
if (event.getEntity() instanceof LegoSet) {
LegoSet legoSet = (LegoSet) event.getEntity();
if (legoSet.getId() == null) {
legoSet.setId(createNewId());
}
}
};
}
Существует пример, демонстрирующий, что в Примеры данных Spring
Причина, по которой ваша строка не была вставлена в таблицу, но вы также не получили исключение: Spring Data JDBC пришел к выводу, что объект уже существует с момента идентификаторабыло установлено и выполнено обновление.Но так как оно не существовало, обновлению не удалось обновить ни одной строки, поэтому ничего не произошло.Возможно, стоит создать запрос на улучшение, чтобы сравнить количество обновлений с 0.