实体生成的字符串ID长度为32

时间:2016-06-03 19:33:54

标签: java hibernate

我有预先配置的数据库,我无法更改。应用程序的主键是最大长度为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;
}

2 个答案:

答案 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);
    }
}