如何获得难以猜测的实体ID(主键)?
理想的是8或16位随机唯一数字或字符串。
我尝试了UUID,但由于报告了错误(https://github.com/h2database/h2database/issues/345),H2测试失败。
或者,如果使用ID很难...在创建时如何获取具有随机唯一编号的另一列自动生成?
对于外部API,我需要每位用户一个随机且难以猜测的唯一ID。
感谢您的任何建议。 :)
最佳答案
您可以使用@PrePersist
注释将值分配给另一列。就像是:
public class MyClass {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
protected T id;
@Column
protected String clientKey;
@PrePersist
public void ensureClientKeyGenerated() {
this.clientKey = UUID.randomUUID();
}
}