Я много читал, используя @SequenceGenerator
- он увеличивает реальную последовательность базы данных на единицу, умножает это значение на 50 (значение по умолчанию allocSize) - и затем использует это значение в качестве идентификатора объекта. Но обнаружил проблему, при которой не выполняется sequence.nextVal и не обновляется последовательность.
Использование Hibernate - 5.0.12
Sequence
CREATE SEQUENCE TEST_ENTITY_ID_SEQ INCREMENT BY 1 MAXVALUE 9999999999999999999999999999 CACHE 20;
Вот моя сущность -
@Entity
@Table(name = "TEST_ENTITY")
public class TestEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "TEST_ENTITY_ID_SEQ", initialValue = 1, allocationSize = 2, sequenceName = "TEST_ENTITY_ID_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TEST_ENTITY_ID_SEQ")
@Column(name = "COMNT_ID")
private Long comntId;
@Column(name = "VIEW_ID")
private Long viewId;
Мой сервисный код -
TestEntity testEntity = new TestEntity();
testEntity.setViewId(11l);
TestEntity testEntity1 = testEntityRepo.save(testEntity);
return testEntity1.toString();
Первый перезапуск моегоприменение моя последовательность тока val как - 7
Попытка 1: Когда я сохраняю TestEntity
, он генерирует Id как - TestEntity{comntId=16, viewId=11}
Попытка2: Когдая сохраняю TestEntity
он генерирует Id как - TestEntity{comntId=17, viewId=11}
Попытка3: Когда я сохраняю TestEntity
, он генерирует Id как - TestEntity{comntId=18, viewId=11}
Попытка 4: КогдаЯ сохраняю TestEntity
, он генерирует Id как - TestEntity{comntId=19, viewId=11}
Currval последовательности по-прежнему такой же как - 7
После перезапуска приложения
Попытка 5: Когда я сохраняю TestEntity
, он генерирует Id как - TestEntity{comntId=20, viewId=11}
Попытка 6: Когда я сохраняю TestEntity
, он генерирует Id как - TestEntity{comntId=21, viewId=11}
последовательность все так же, как - 7
После перезапуска приложения
Попытка 7: Когда я сохраняю TestEntity
, он генерирует Id как - TestEntity{comntId=22, viewId=11}
Попытка8: Когда я сохраняю TestEntity
, он генерирует Id как - TestEntity{comntId=23, viewId=11}
Currval последовательности по-прежнему такой же, как - 7
Просто заметьте, что нет никакой разницы, даже если я изменю его на allocationSize = 1
Это ожидаемое поведение? Или я что-то здесь упускаю?