как создать идентификатор с использованием последовательностей базы данных вместо генератора идентификаторов jpa - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть таблица сущностей со следующей конфигурацией

@Id
    @Column(name = "id")

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ORDER_SEQ")

@SequenceGenerator(sequenceName = "SEQ_ORDERS", allocationSize = 1, name = "ORDER_SEQ")

private Long id;

, как вы можете видеть, я использую последовательность для генерации идентификатора заказа таблицы.

Моя последовательность:

создать или заменить TRIGGER "TR_ORDERS" перед вставкой в ​​"ORDERS" для каждой строки, если: NEW. "ID" равен нулю, затем выберите CONCAT (TO_CHAR (Sysdate, 'YYMMDD'), "SEQ_ORDERS" .nextval) в: NEW. "ID" из двойного;конец если;end;

Если я запускаю приложение, то идентификатором, назначенным новому заказу, будет число, например 3, например.

enter image description here

Однако я хотел бы использовать формат последовательностей CONCAT(TO_CHAR(Sysdate, 'YYMMDD'),"SEQ_ORDERS".nextval, тогда результат должен быть таким:

enter image description here

Это происходит из-за того, что мой идентификатор не равен нулю, тогда база данных не использует последовательность, как я могу это исправить, не меняя последовательность.Первая проблема заключается в том, что я не могу вставить ордер с нулевым значением, но если у меня есть ненулевой идентификатор, база данных не использует правило последовательности для сопоставления даты с идентификатором ...

...