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;     //公司名称
相关推荐
计算机毕设vx_bysj68699 分钟前
计算机毕业设计必看必学~基于SpringBoot校园招聘系统的设计与实现,原创定制程序、单片机、java、PHP、Python、小程序、文案全套、毕设成品等!
java·spring boot·mysql·课程设计
老迟聊架构23 分钟前
系统性的理解分布式系统
后端·架构
javaTodo26 分钟前
Claude Code 之父的技巧分享:用"拉尔夫循环"让 AI 替你死磕
后端
董员外27 分钟前
LangChain.js 快速上手指南:模型接入、流式输出打造基础
前端·javascript·后端
AomanHao31 分钟前
基于高德地图JS的旅游足迹,可嵌入个人博客中
前端
用户40993225021231 分钟前
Vue3组件开发中如何兼顾复用性、可维护性与性能优化?
前端·vue.js·trae
千寻girling32 分钟前
面试官 : “ 请问你实际开发中用过 函数柯理化 吗? 能讲一下吗 ?”
前端·javascript·面试
golang学习记33 分钟前
Claude Opus 4.6 正式发布:Agent 时代的编程王者与长上下文革命
前端·人工智能·后端
钟智强35 分钟前
QuestDB惊现认证绕过漏洞(CVSS 9.8),大量金融/物联网系统恐成【透明库】
后端
双向3336 分钟前
RAG实战解密:三步构建你的智能文档问答系统(附开源方案)
前端