Java 使用系统uuid将数据插入数据库

Java 使用系统uuid将数据插入数据库,java,oracle,random,sequence,uuid,Java,Oracle,Random,Sequence,Uuid,我遇到了一个与系统生成的uniquer标识符相关的问题 下面是my bean类中datamember的定义: @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid") @Column(name = "id") private String id; 无论何时调用客户机操作,数据都将基于DB持久化,并使用上面的系统uuid动态生成id属性值。现在

我遇到了一个与系统生成的uniquer标识符相关的问题

下面是my bean类中datamember的定义:

@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(name = "id")
private String id;
无论何时调用客户机操作,数据都将基于DB持久化,并使用上面的系统uuid动态生成id属性值。现在我有一个要求,我必须对这个表执行大规模插入。由于没有导入功能,是否有任何方法可以使用oracle insert查询从后端执行批量插入?如果是这样,我如何提及列“id”的值,使其工作方式与从客户端进行的插入相同。

使用SYS\u GUID对于批量插入非常有效,如下面在一个小示例中模拟的那样

INSERT INTO TARGET_TABLE
select 
rawtohex(sys_guid()) uuid
from dual connect by level <= 3
;
一个简单的子查询和一些带有连接的子查询带来了补救措施-请参阅:


使用SYS_GUID。背后的原因是Oracle的UUID是RAW16,它是一种比CHAR36更有效的存储方式。
UID                           
--------------------------------
BBEDBA2A9BB44952AA5EE311D0880C39 
B95CA374AC7C4619A68543771101D590 
6B4E89CF0307427BBD047E42BD6DFBB0
with t as (
  select rawtohex(sys_guid()) guid from dual
  connect by level <= 3
)
select guid, lower(substr(guid, 1, 8)
  ||'-'|| substr(guid, 9, 4)
  ||'-'|| substr(guid, 13, 4)
  ||'-'|| substr(guid, 17, 4)
  ||'-'|| substr(guid, 21, 12)) as formatted_guid
from t;


GUID                             FORMATTED_GUID                     
-------------------------------- ------------------------------------
993712381A8543FB9320C587D078330E 99371238-1a85-43fb-9320-c587d078330e 
FFF3CF7104E048BF8E6677B080BD35A6 fff3cf71-04e0-48bf-8e66-77b080bd35a6 
1FBCC67EA46B4474B26128F2DDAA519B 1fbcc67e-a46b-4474-b261-28f2ddaa519b