首页 > 编程语言 > 详细

SpringJPA主键生成采用自定义ID,自定义ID采用年月日时间格式

时间:2019-03-21 23:56:53      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:throw   hibernate   generator   当前时间   app   时间格式   name   eric   exceptio   

自定义主键生成策略

  1. 在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"

  1. 在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;// 当前时间  
    }
}

注意:

  1. 测试的ID是Long类型所以这里继承的是IdentityGenerator类
  2. 如果ID为String类型的话应该继承 UUIDGenerator 或者 UUIDGenerator

参考:
Spring boot JPA 用自定义主键策略 生成自定义主键ID

AVA随机生成文件名:当前年月日时分秒+五位随机数

SpringJPA主键生成采用自定义ID,自定义ID采用年月日时间格式

标签:throw   hibernate   generator   当前时间   app   时间格式   name   eric   exceptio   

原文:https://www.cnblogs.com/liaoguanwang/p/10575633.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号