如何获得难以猜测的实体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();
    }

}

07-28 07:30