SpringJPA主鍵生成采用自定義ID,自定義ID采用年月日時間格式


自定義主鍵生成策略

  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隨機生成文件名:當前年月日時分秒+五位隨機數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM