如何使用数据库序列而不是jpa id生成器来创建id

时间:2018-12-13 18:00:26

标签: oracle spring-data-jpa sequence

我有一个具有下一个配置的实体表

@Id
    @Column(name = "id")

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

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

private Long id;

如您所见,我正在使用序列生成表订单ID。

我的顺序是:

创建或替换触发器“ TR_ORDERS”   在插入“ ORDERS”之前   每行 开始   如果:NEW。“ ID”为null,则     选择CONCAT(TO_CHAR(Sysdate,                'YYMMDD'),“ SEQ_ORDERS” .nextval)转换成对偶的:NEW。“ ID”;   万一; 结束;

如果我运行该应用程序,则分配给新订单的ID将是一个数字,例如3。

enter image description here

但是,我想使用序列格式CONCAT(TO_CHAR(Sysdate, 'YYMMDD'),"SEQ_ORDERS".nextval,那么结果应该像这样。

enter image description here

之所以发生这种情况是因为我的ID不为null,则数据库未使用序列,我如何在不更改序列的情况下解决此问题。第一个问题是我不能插入具有空值的订单,但是如果我的ID不为空,则数据库不会使用序列规则将日期与ID关联起来。

0 个答案:

没有答案