首页 > 解决方案 > UUID在sql server中的存储方式不同

问题描述

我将 UUID 存储为主键。

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

问题在于 sql_server 中的 UUID 存储的顺序与我从 JSON 输出中得到的顺序不同。

JSON 输出

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

数据库

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

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

标签: sql-serverhibernateuuid

解决方案


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


推荐阅读