- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
try {
repository.saveAll(entities);
} catch (final ConstraintViolationException e) {
throw new SettingsServiceException(ErrorFormatter.formatValidationErrors(
"Errors have been detected when saving", e));
} catch (final PersistenceException e) {
for (val t: Throwables.getCausalChain(e)) {
if (t instanceof EntityExistsException) {
val failedObject = (IEntity) ((ExceptionInfo) t).getFailedObject();
// failedObject is returned with the state in which it is in the database.
// Let's find the version that we tried to save, instead.
for (val entity: entities) {
if (entity.getId() != null && entity.getId().equals(failedObject.getId())) {
throw new SettingsServiceException("Attempted to save duplicate value: " + entity);
}
}
}
}
throw e;
}
Попытка вернуть пользователю человеко-читаемое сообщение о том, где, собственно, дубликат.
Костыли вы мои, костыли...
Комментарии (0) RSS
Добавить комментарий