fix(rest-api): saveAndFlush при update record чтобы не падал exclusion constraint

Update bitemporal записи: close old (set valid_to = new valid_from) → insert new.
Hibernate batch'ил эти два save() и до commit'а UPDATE не flush'ился. PostgreSQL
видел что старая запись имеет valid_to=FAR_FUTURE и tstzrange новой записи
пересекался → 23P01 conflicting key value violates exclusion constraint
dictionary_records_no_overlap → 500 для пользователя.

Заменил repository.save(current) на saveAndFlush(current) — UPDATE летит в БД
до INSERT, range'ы становятся [from1, X) и [X, to2) и не пересекаются.
This commit is contained in:
Zimin A.N.
2026-05-04 03:50:00 +03:00
parent 0e12a254c2
commit b0746de128
@@ -115,7 +115,10 @@ public class DictionaryRecordService {
UUID previousRecordId = current.getId();
current.setValidTo(newValidFrom);
repository.save(current);
// saveAndFlush обязателен: иначе Hibernate отложит UPDATE до commit, INSERT новой
// записи пойдёт первым → exclusion constraint dictionary_records_no_overlap бьёт,
// т.к. старая ещё имеет valid_to=FAR_FUTURE и tstzrange'и пересекаются.
repository.saveAndFlush(current);
var next = new DictionaryRecord(
UUID.randomUUID(),