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;     //公司名称
相关推荐
小小前端要继续努力4 分钟前
渐进增强、优雅降级及现代Web开发技术详解
前端
S***q1925 分钟前
Rust在系统工具中的内存安全给代码上了三道保险锁。但正是这种“编译期的严苛”,换来了运行时的安心。比如这段代码:
开发语言·后端·rust
v***7949 分钟前
Spring Boot 热部署
java·spring boot·后端
追逐时光者32 分钟前
C#/.NET/.NET Core优秀项目和框架2025年11月简报
后端·.net
码事漫谈40 分钟前
Reactor网络模型深度解析:从并发困境说起
后端
T***u33342 分钟前
Rust在Web中的 Web框架
开发语言·后端·rust
码事漫谈43 分钟前
从理论到实践:构建你的AI语音桌面助手(Demo演示)
后端
老前端的功夫1 小时前
前端技术选型的理性之道:构建可量化的ROI评估模型
前端·javascript·人工智能·ubuntu·前端框架
o***59271 小时前
Spring 过滤器:OncePerRequestFilter 应用详解
java·后端·spring
稚辉君.MCA_P8_Java1 小时前
Gemini永久会员 三个线程(A、B、C)交替执行
java·后端·架构