公司项目需要使用SpringDataJpa,但是Jpa自带的Id生成策略又不存在雪花算法。
当然首选是使用自定义GenericGenerator,参考如下:
那还有没有其他办法呢?
于是想到利用Jpa的自动填充,在插入前给其生成一个id
具体方法如下
首先在启动类上加入注解
@EnableJpaAuditing
在实体类上加入注解
@EntityListeners(AuditingEntityListener.class)
加入该注解能监听 创建/更新的操作。
在主键加入@CreateBy注解
@Id
@Column(name = "id")
@CreatedBy
private Long measureDelegateId;
@CreateBy注解需要配置才可生效
@Component
public class JPAAuditorAware implements AuditorAware<Long> {
@Override
public Optional<Long> getCurrentAuditor() {
Snowflake snowflake = IdUtil.createSnowflake(1, 1);
Long id = snowflake.nextId();
return Optional.of(id);
}
}
加入以上配置,需要用到hutool工具包里面的Id生成工具类
试试插入一条数据进数据库
可以看到id生成成功!