引入雪花算法依赖
<!--青岛漂移算法ID-->
<dependency>
<groupId>com.github.yitter</groupId>
<artifactId>yitter-idgenerator</artifactId>
<version>1.0.6</version>
</dependency>
erupt控制器文件加入自定义主键:
@Id
@GeneratedValue(generator = "couponIdGenerator",
strategy = GenerationType.SEQUENCE)
@GenericGenerator(
name = "couponIdGenerator",
strategy = "com.parkinglot.enshi.tools.CarAutoID" //主键生成类名
)
@EruptField
private Long id;
自定义主键生成类:
package com.parkinglot.enshi.tools;
import com.github.yitter.contract.IdGeneratorOptions;
import com.github.yitter.idgen.YitIdHelper;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.IdentifierGenerator;
import java.io.Serializable;
@Slf4j
public class CarAutoID implements IdentifierGenerator {
final static short method = 1;
public void init() {
IdGeneratorOptions options = new IdGeneratorOptions();
options.WorkerIdBitLength = 6;
options.SeqBitLength = 10;
options.BaseTime = System.currentTimeMillis();
options.Method = method;
options.WorkerId = 1;
YitIdHelper.setIdGenerator(options);
}
public static Long snowflake(){
return YitIdHelper.nextId();
}
@Override
public Serializable generate(SharedSessionContractImplementor session, Object object)
throws HibernateException {
return YitIdHelper.nextId();
}
}
这篇文章还没有评论