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;     //公司名称
相关推荐
缓解AI焦虑几秒前
大模型量化部署进阶:从 INT8/INT4 原理到高性能推理实战
后端
忆江南几秒前
对组件化与模块化的思考与总结
前端
小码哥_常4 分钟前
从0到1:Android组件化架构搭建秘籍
前端
忆江南4 分钟前
iOS 应用启动流程与优化详解
前端
itslife9 分钟前
前端架构模式思考
前端·架构
Felix_One14 分钟前
ESP32 + Qt 串口通信(一):从协议设计到双向数据链路
后端
Wect15 分钟前
JSX & ReactElement 核心解析
前端·react.js·面试
雨落Re15 分钟前
从递归组件到 DSL 引擎:我造了一个让 AI 能"搭 UI"的运行时
前端·vue.js
Maxkim16 分钟前
前端工程化落地指南:pnpm workspace + Monorepo 核心用法与实践
前端·javascript·架构
用户3775154127617 分钟前
用 AR 眼镜打造你的办公助手,使用 Unity 开发到 Rokid 部署全记录
后端