Но при добавлении индекс перезаписывает предыдущие значения, то есть не добавляется новое значение, а перезаписывается уже существующее.
Как быть с этим, хотелось бы сохранить тип поля Integer, для совместимости с предыдущей версии проекта
При добавлении новой записи через rest api формируется id, который уже существует, в итоге запись с этим id перезаписывается.
В сущности, созданной с нуля id формируются как положено, по порядку. Проблема в том, что записи в таблице перенесены из другой базы, и как я понял jmix не может выставить текущий индекс для id. Как указать текущий id для генератора последовательностей нигде не нашел.
Т.е. проблема по сути в том, что последовательности для генерации ID были пересозданы, т.к. не были перенесены в новую базу.
Должно помочь выставление корректного значения в последовательности.
Для PostgreSQL:
Получите параметры проблемной последовательности: SELECT * FROM pg_sequences WHERE sequencename = '<sequence_name>';
Интересующие параметры:
last_value - последнее запрошенное значение
increment_by - на сколько увеличивается last_value при каждом запросе следующего значения. Это сделано для in-memory кэширования порции ID и уменьшения числа запросов в базу. Размер зависит от значения свойства jmix.data.numberIdCacheSize (100 по-умолчанию).
Получите максимальный существующий ID для проблемной сущности: SELECT MAX(id) from <entity_table_name>;
Если это значение больше, чем last_value из последовательности, то проблема актуальна.
Округлите вверх максимальный ID до значения, кратного инкременту. Пример: max ID = 54677, increment = 100 → новое значение последовательности будет 54700.
Установите новое значение последовательности: SELECT setval('<sequence_name>', <new_sequence_value>);
После данных правок следующий запрос к последовательности вернет новые, несовпадающие с существующими значения.