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;     //公司名称
相关推荐
风止何安啊12 小时前
快 2026 年了,谁还在为 this 挠头?看完这篇让你彻底从懵圈到精通
前端·javascript·node.js
sino爱学习13 小时前
Arthas 线上常用命令速查手册:Java 诊断神器,5 分钟定位线上问题!
后端
烟袅13 小时前
从零开始:前端如何通过 `fetch` 调用 大模型(详解)
前端·javascript·llm
songroom13 小时前
Rust: 量化策略回测与简易线程池构建(MPMC)
开发语言·后端·rust
绝无仅有13 小时前
面试日志elk之ES数据查询与数据同步
后端·面试·架构
Electrolux13 小时前
基于WASM的纯前端Office解决方案:在线编辑/导入导出/权限切换(已开源)
前端
码农BookSea13 小时前
用好PowerMock,轻松搞定那些让你头疼的单元测试
后端·单元测试
绝无仅有13 小时前
大场面试之最终一致性与分布式锁
后端·面试·架构
合作小小程序员小小店13 小时前
web网页开发,在线%医院诊断管理%系统,基于Idea,html,css,jQuery,java,jsp,ssh,mysql。
java·前端·css·数据库·jdk·html·intellij-idea
g***727013 小时前
Spring Boot 整合 Redis 步骤详解
spring boot·redis·bootstrap