我有一个具有下一个配置的实体表
@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。
但是,我想使用序列格式CONCAT(TO_CHAR(Sysdate, 'YYMMDD'),"SEQ_ORDERS".nextval
,那么结果应该像这样。
之所以发生这种情况是因为我的ID不为null,则数据库未使用序列,我如何在不更改序列的情况下解决此问题。第一个问题是我不能插入具有空值的订单,但是如果我的ID不为空,则数据库不会使用序列规则将日期与ID关联起来。