UUID以不同的方式存储在SQL Server中

时间:2018-11-07 20:09:03

标签: sql-server hibernate uuid

我将UUID存储为主键。

  @GeneratedValue(generator = "UUID_GENERATOR")
    @GenericGenerator(name = "UUID_GENERATOR", strategy = "uuid2")
    @Column(name = "store_id")
    private UUID storeId;

问题是在sql_server中,与我从JSON输出中获得的UUID相比,UUID存储的顺序不同。

JSON输出

 "storeId": "3854fe95-e6b6-4319-9d9a-bfe67c9a07d6",

数据库

storeID: "95FE5438-B6E6-1943-9D9A-BFE67C9A07D6"

最初的8-4-4位数字以不同的顺序存储,而最后的4-12位数字相同。这个问题的原因是什么?如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

区别在于字节顺序;微软喜欢将前半部分存储为小端,这有点奇怪,因为他们总是将后半部分存储为大端。其他所有人都将整个东西存储为大端,这使事情变得更加简单和可移植。

答案 1 :(得分:0)

您可能正在使用Hibernate,那么此代码应该可以工作:

@Id
@GeneratedValue
@Type(type = "uuid-char")
@Column(columnDefinition="uniqueidentifier")
protected UUID id;