Распределение гибернацииSize и сгенерированные шаги> 1 с последовательностью Oracle - PullRequest
1 голос
/ 14 апреля 2020

вот что я пытаюсь достичь:

У меня есть Oracle Последовательность, определенная следующим образом:

CREATE SEQUENCE  "SEQ_ENDKUNDE"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1000 START WITH 1 CACHE 20 GLOBAL ;

Идентификаторы должны быть увеличены на 1000 из-за сложной репликации инфраструктуры. Часть Hibernate выглядит следующим образом:

@Id
@GeneratedValue(
    strategy = GenerationType.SEQUENCE,
    generator = "sequence-generator"
)
@SequenceGenerator(
    name = "sequence-generator",
    sequenceName = "SEQ_ENDKUNDE",
    allocationSize = 1
)
private Long id;

Это работает, но неэффективно, поскольку Hiberate должен запрашивать новый Id при каждой вставке.

Кто-нибудь знает, есть ли способ добиться такого поведения с помощью оптимизированного генератора пула или пула:

@Id
@GeneratedValue(
    strategy = GenerationType.SEQUENCE,
    generator = "sequence-generator"
)
@GenericGenerator(
    name = "sequence-generator",
    strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
    parameters = {
        @Parameter(name = "sequence_name", value = "SEQ_ENDKUNDE"),
        @Parameter(name = "initial_value", value = "1"),
        @Parameter(name = "increment_size", value = "1000"),
        @Parameter(name = "optimizer", value = "pooled-lo")
    }
)
private Long id;

Проблема в том, что Hibernate будет генерировать идентификаторы типа 1001,1002,1003..., но мне нужно 1001,2001,3001.

Заранее спасибо за любые идеи!

...