Sql 如何使用JPQL查询存储为二进制(16)的UUID

Sql 如何使用JPQL查询存储为二进制(16)的UUID,sql,sql-server,hibernate,uuid,Sql,Sql Server,Hibernate,Uuid,我们使用UUID作为主键 注释如下 @Id @Column(columnDefinition = "BINARY(16)") protected UUID id; 我们自己生成UUID,效果很好 但是,例如,当我们手动插入时会出现问题 INSERT PINSUS..job ([id], [version], [date_created], [description], [job_url], [last_updated], [name]) VALUES (CAST('30783030-3030-

我们使用UUID作为主键

注释如下

@Id
@Column(columnDefinition = "BINARY(16)")
protected UUID id;
我们自己生成UUID,效果很好

但是,例如,当我们手动插入时会出现问题

INSERT PINSUS..job ([id], [version], [date_created], [description], [job_url], [last_updated], [name]) VALUES (CAST('30783030-3030-3030-3030-303030303030' AS VARBINARY(16)), CAST(0 AS Numeric(19, 0)), CAST(N'2018-01-23 12:29:02.653' AS DateTime), N'Job for nomis', N'http://localhost:8086/batch/operations/jobs/nomisLoadJob', CAST(N'2018-01-23 12:29:02.653' AS DateTime), N'nomisLoadJob')
根据Microsoft Management Studio,它将id存储为0x33303738333033033023302D3330

然而,使用jetbrains datagrip查看它时,id显示为3078030-3030-30

因为它似乎是我们试图插入的原始UUID的部分字符串,但在转换为二进制16时被截断

如何使用SQL for MSSQL Server手动插入UUID


目前,如果我们尝试使用带有原始UUID的JPQL查询,我们不会得到任何结果。

为什么要使用
二进制(16)
?SQL Server具有UUIDs?@DaleK的uniqueidentifier数据类型,这只是为了在测试时减少存储大小。SQL Server和Oracle将使用该代码。SQL Server的默认列类型是使用hibernate的二进制(255)。我们不能告诉它使用uniqueidentifier,因为它在Oracle中不存在。