MySQL中的UUID外部取值时错误

来源:互联网 发布:人工智能的股票有哪些 编辑:程序博客网 时间:2024/05/23 00:49
  • 在 MySQL 中,可以有如下几种途径实现唯一值:

    • 自增序列
    • UUID() 函数
    • 程序自定义

    MySQL 实现了 UUID,并且提供 UUID() 函数方便用户生成 UUID。

 SELECT UUID()===>  3525f31e-6bbb-423b-92f5-9ef63110c2f7

在上面 MySQL 的 UUID() 函数生成中,针对UUID产生的值组成部分,分别如下:

  1. 前三组数字从时间戳中生成
  2. 第四组数字暂时保持时间戳的唯一性
  3. 第五组数字是一个 IEEE 802 节点标点值,保证空间唯一。使用 UUID() 函数,可以生成时间、空间上都独一无二的值
  • 在外部Java Spring通过SQL语句来查询数据库时,得到的表字段属性是UUID的值和数据里面的值不一样,这里只需要在java类中加上 @Type(type = “uuid-char”)属性,实际代码如下:
@Entity@Table(name = "roles")public class RoleDto implements Serializable {  private UUID id;  private String code;  private String name;  private int status;  private UUID tenantId;  @Id  @Type(type = "uuid-char")  @GeneratedValue  public UUID getId() {    return id;  }  public void setId(UUID id) {    this.id = id;  }  @Basic  @Column(name = "code")  public String getCode() {    return code;  }  public void setCode(String code) {    this.code = code;  }  @Basic  @Column(name = "name")  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  @Basic  @Column(name = "status")  public int getStatus() {    return status;  }  public void setStatus(int status) {    this.status = status;  }  @Basic  @Type(type = "uuid-char")  @Column(name = "tenant_id")  public UUID getTenantId() {    return tenantId;  }  public void setTenantId(UUID tenantId) {    this.tenantId = tenantId;  }

最后数据库中的UUID值和外部得到的UUID 不相同的问题就完美解决了