自定义主键生成策略
在 entity 类上添加注解
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO, generator = "custom-id") @GenericGenerator(name = "custom-id", strategy = "com.h5page-mapdiy.utils.CustomIDGenerator")
- @Column(name = "id")
- public Long getId() {
- return id;
- }
注意: GeneratedValue 中的 generator 要与 GenericGenerator 中的 name 相等 上面代码中是 "custom-id"
在 utils 包下添加自定义 ID 生成类
- package com.h5page-mapdiy.utils
- import org.hibernate.MappingException;
- import org.hibernate.engine.spi.SharedSessionContractImplementor;
- import org.hibernate.id.IdentityGenerator;
- import java.io.Serializable;
- /**
- * 自定义 ID 生成器
- * @author liaoguanwang
- * @date 2019-03-16 10:33
- */
- public class CustomIDGenerator extends UUIDGenerator {
- @Override
- public Serializable generate(SharedSessionContractImplementor session, Object object) throws MappingException {
- SimpleDateFormat simpleDateFormat;
- simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
- Date date = new Date();
- String str = simpleDateFormat.format(date);
- Random random = new Random();
- int rannum = (int) (random.nextDouble() * (99999 - 10000 + 1)) + 10000;// 获取 5 位随机数
- return rannum + str;// 当前时间
- }
- }
注意:
测试的 ID 是 Long 类型所以这里继承的是 IdentityGenerator 类
如果 ID 为 String 类型的话应该继承 UUIDGenerator 或者 UUIDGenerator
参考:
Spring boot JPA 用自定义主键策略 生成自定义主键 ID https://www.cnblogs.com/DevMuYuer/p/10088425.html
AVA 随机生成文件名: 当前年月日时分秒 + 五位随机数 https://sxdtzhaoxinguo.iteye.com/blog/2274635
来源: http://www.bubuko.com/infodetail-2995502.html