Причина, вероятно, заключается в следующем:
Эта последовательность и эта таблица уже используется приложением perother
У вас есть гарантия, что другое приложение использует ту же последовательностьSEQ_HGCTRAMITES
для генерации первичных ключей, так же, как в Hibernate ?
По умолчанию Hibernate ожидает увеличения последовательности на 50 и использует числа от n-50
до n
для заполнения идентификаторов, где n
- последнее значение, сгенерированное последовательностью.
Если, например, вы знаете, что другое приложение ожидает увеличения последовательности на 1, и просто использует последнее значение последовательности для последовательных идентификаторов, вы должны использовать @SequenceGenerator(..., incrementBy = 1)
для имитации этого поведения.Чтобы выйти из текущего затруднительного положения, вам также потребуется переслать последовательность, чтобы ни одно из приложений не пыталось использовать идентификатор, который уже присутствует в таблице (вы можете просто продолжать выбирать nextval
из последовательности, пока она не станет больше, чем любая другая).идентификатор уже присутствует).
Если оба приложения используют JPA, то синхронизация параметра incrementBy
должна помочь (хотя часть о пересылке последовательности остается в силе).