昨天联调的时候发现前端的一个外键id的值和数据库的值对不上,最后两位总是错的,百度搜了一下发现是这个问题:
JS中Number的精度为16位,而spring中 ASIGN_ID(雪花算法)自动生成的id为18位,导致传输到前台会丢失掉。
所以解决办法就是把long类型转换为String类型再传输到前台。
转换的方法有很多:比如可以再VO里边转,也有一些材料说在启动类里边转,但是想一下,为什么表主键ID传到前台是String类型呢:
看一下自动生成的代码就知道了,主键ID上加了这个注解:
@JsonSerialize(using = ToStringSerializer.class)
所以在entity中对应的Long类型的字段上都加上这个注解就搞定了—最好还是在所有的long属性上都加上这个注解比较好吧。可以参考一下 参考blog 中的第二条。
那接下来来看一下 **@JsonSerialize ** 这个注解:
这个注解可以作用在属性的getter方法上,实现数据转换。
参考blog: