使用 system-uuid 将数据插入数据库
Inserting data to DB using system-uuid
我 运行 遇到与系统生成的唯一标识符相关的问题。
下面是我的 bean 中数据成员的定义 class:
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(name = "id")
private String id;
每当调用客户端操作时,数据将根据使用上述 system-uuid 动态生成的 id 属性值持久保存到数据库中。现在我有一个要求,我必须对此 table 执行批量插入。由于没有导入功能,有什么方法可以使用 oracle 插入查询从后端执行批量插入?如果是这样,我如何提及列 'id' 的值,以便它的工作方式与从客户端发生的插入相同。
SYS_GUID
的用法对于批量插入非常有效,如下面的一个小示例所模拟的
INSERT INTO TARGET_TABLE
select
rawtohex(sys_guid()) uuid
from dual connect by level <= 3
;
唯一的(可见的)问题是,生成的字符串未按照 Java uuid 的预期格式进行格式化。
UID
--------------------------------
BBEDBA2A9BB44952AA5EE311D0880C39
B95CA374AC7C4619A68543771101D590
6B4E89CF0307427BBD047E42BD6DFBB0
一个简单的子查询和一些带有串联的 substr
s 带来了补救措施 - 请参阅 :
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
我 运行 遇到与系统生成的唯一标识符相关的问题。
下面是我的 bean 中数据成员的定义 class:
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(name = "id")
private String id;
每当调用客户端操作时,数据将根据使用上述 system-uuid 动态生成的 id 属性值持久保存到数据库中。现在我有一个要求,我必须对此 table 执行批量插入。由于没有导入功能,有什么方法可以使用 oracle 插入查询从后端执行批量插入?如果是这样,我如何提及列 'id' 的值,以便它的工作方式与从客户端发生的插入相同。
SYS_GUID
的用法对于批量插入非常有效,如下面的一个小示例所模拟的
INSERT INTO TARGET_TABLE
select
rawtohex(sys_guid()) uuid
from dual connect by level <= 3
;
唯一的(可见的)问题是,生成的字符串未按照 Java uuid 的预期格式进行格式化。
UID
--------------------------------
BBEDBA2A9BB44952AA5EE311D0880C39
B95CA374AC7C4619A68543771101D590
6B4E89CF0307427BBD047E42BD6DFBB0
一个简单的子查询和一些带有串联的 substr
s 带来了补救措施 - 请参阅
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