【问题标题】:UUID's storing in a different way in sql serverUUID在sql server中的存储方式不同
【发布时间】:2019-04-11 07:57:45
【问题描述】:

我将 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 位是相同的。这个问题是什么原因造成的,如何解决?

【问题讨论】:

  • JSON 输出从哪里?您是如何获得 JSON 输出的,您是如何将数据存储在 SQL Server 中的,以及您是如何从 SQL Server 检索数据的?
  • 可能列设置为自动生成uid。
  • @AaronBertrand 从我用来将数据发布到数据库的端点。
  • @JacobH 我没听懂
  • 这不是很具体。我不知道你的端点是什么,我什至不知道你在那里回答了我的哪些问题。祝你好运。 /耸肩

标签: sql-server hibernate uuid


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-22
      • 2017-05-29
      • 2018-03-04
      • 2014-09-18
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多