在制作博客查看文章详情时候遇到传到前端的id和后端不一样导致无法显示页面
因为ID是用的雪花算法,Long类型的id返回前端会导致进度丢失
丢失的原因:
js 的 number 类型支持的最大值是9007199254740992 (2 的 53次方 -1),溢出之后的精度会丢失,导致前后端的值不一致。 java 的 long 类型最大值为 9223372036854775807,远高于 js number类型的最大值,所以这个坑就出现了。
解决方法:
可以在每个实体类的id字段上加注解
@JsonFormat(shape = JsonFormat.Shape.STRING) private Long id;
注:目前觉得这个方法最简单又好用,如果把ID转为String类型会牺牲了 long 类型的性能优势
小Tips:
要注意出问题的实体类在哪里,可以通过查看相关方法的代码得知。