我有预先配置的数据库,我无法更改。应用程序的主键是最大长度为32的字符串。
我有hibernate实体,目前正在使用uuid2
策略来生成应用程序ID。问题实际上是,UUID长度是36,但我需要32.为应用程序生成ID对我来说有什么好处?
Bellow是我当前实体的简化版。
@Entity
public class Application {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private String applicationId;
private String name;
}
答案 0 :(得分:4)
找到我的问题的解决方案:刚切换到策略uuid
而不是uuid2
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid")
@Column(name = "application_id")
@Size(max = 32)
private String applicationId;
答案 1 :(得分:2)
可能你可以尝试这样的事情。您可以创建一个PrePersist
方法,可以在持久化之前修改该值。
@PrePersist
public void initializeUUID() {
if (applicationId == null) {
applicationId = UUID.randomUUID().toString().subString(0, 32);
} else {
applicationId = applicationId.toString().subString(0, 32);
}
}