MySQL中的UUID外部取值時錯誤
阿新 • • 發佈:2019-01-03
在 MySQL 中,可以有如下幾種途徑實現唯一值:
- 自增序列
- UUID() 函式
- 程式自定義
MySQL 實現了 UUID,並且提供 UUID() 函式方便使用者生成 UUID。
SELECT UUID()
===> 3525f31e-6bbb-423b-92f5-9ef63110c2f7
在上面 MySQL 的 UUID() 函式生成中,針對UUID產生的值組成部分,分別如下:
- 前三組數字從時間戳中生成
- 第四組數字暫時保持時間戳的唯一性
- 第五組數字是一個 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;
}