hibernate+mysql-如何获得不可猜测的生成id?

rur96b6h  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(277)

如何才能让实体id(主键)难以猜测?
理想的是8或16位随机唯一数字或字符串。
我尝试了uuid,但是由于报告的bug,我的h2测试失败了(https://github.com/h2database/h2database/issues/345).
或者如果身份证不好。。。如何在创建时使用随机唯一数自动生成另一列?
我需要随机,难以猜测,每个用户的外部api唯一的id。
感谢您的建议。:)

0pizxfdo

0pizxfdo1#

可以使用为另一列赋值 @PrePersist 注解。比如:

public class MyClass  {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    protected T id;

    @Column
    protected String clientKey;

    @PrePersist
    public void ensureClientKeyGenerated() {
          this.clientKey = UUID.randomUUID();  
    }

}

相关问题