SpringBoot雪花算法主键ID传到前端后精度丢失问题的解决

Java后端Long类型的范围

-263~263,即:-9223372036854775808~9223372036854775807,它是19位的。

这个数字可以通过方法获得:Long.MAX_VALUE、Long_MIN_VALUE。

前端JS的数字类型的范围

-253~253,即:-9007199254740991~9007199254740991,它是16位的。

这个数字可以通过方法获得:Number.MAX_SAFE_INTEGER、Number.MIN_SAFE_INTEGER。

结论

可见,Java后端的Long宽度大于前端的。雪花算法一般会生成18位或者19位宽度的数字,那么这时就会出问题。

解决方法

实体类entity增加@JsonSerialize注解

java 复制代码
@Data
@TableName("tb_course_base")
public class Course {
    //序列化时,不采用long类型,而采用string类型,防止雪花精度丢失问题
    @JsonSerialize(using= ToStringSerializer.class)
    @TableId(type = IdType.ASSIGN_ID)   //主键生成策略,雪花
    private Long id;
    private Long companyId;         //公司编号
    private String companyName;     //公司名称
相关推荐
盐水冰1 分钟前
【烘焙坊项目】后端搭建(10) - 地址簿功能&用户下单&微信支付
java·数据库·后端
有一个好名字19 分钟前
claude code安装
linux·运维·前端
zone773924 分钟前
007:RAG 入门-向量嵌入与检索
后端·面试·agent
BIBABULALA29 分钟前
Mini Virtual Machine — 可视化虚拟机模拟器(91行)
前端·css·css3
zuoerjinshu35 分钟前
【SpringBoot】讲清楚日志文件&&lombok
java·spring boot·后端
哈密瓜的眉毛美36 分钟前
零基础学Java|第九篇:面向对象编程的类与对象(进阶)
后端
筱璦37 分钟前
期货软件开发「启动加载页 / 初始化窗口」
前端·c#·策略模式·期货
咚为40 分钟前
Rust 跨平台编译实战:从手动配置到 Cross 容器化
开发语言·后端·rust
只与明月听43 分钟前
RAG深入学习之Emabedding
前端·python·面试
We་ct1 小时前
React Scheduler & Lane 详解
前端·react.js·前端框架·reactjs·个人开发·任务调度·优先