вот что я пытаюсь достичь:
У меня есть 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
.
Заранее спасибо за любые идеи!