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;     //公司名称
相关推荐
行百里er12 分钟前
一个还没写代码的开源项目,我先来“画个饼”:Spring Insight
后端·开源·github
威哥爱编程17 分钟前
2026年的IT圈,看看谁在“裸泳”,谁在“吃肉”
后端·ai编程·harmonyos
码事漫谈22 分钟前
当多态在构造中“失效”的那一刻
后端
Sammyyyyy27 分钟前
Symfony AI 正式发布,PHP 原生 AI 时代开启
开发语言·人工智能·后端·php·symfony·servbay
hellokatewj29 分钟前
React Hooks 全解:原理、API 与应用场景
前端·javascript·react.js
袋鱼不重36 分钟前
保姆级教程:让 Cursor 编辑器突破地区限制,正常调用大模型(附配置 + 截图)
前端·后端·cursor
bieao38 分钟前
Vite+Antd+Micro-app中iframe模式下样式闪烁的问题
前端
zhouzhouya41 分钟前
码上星辰,人间烟火:我的2025
前端·程序员·代码规范
彭涛3611 小时前
什么是MessageChannel
前端
AllFiles1 小时前
Kubernetes PVC 扩容全流程实战:从原理到操作详解
后端·kubernetes