在建实体类时对应数据库类型,有个id为long数据库为bigint(20),结果在将19位长的数字返回到页面中后数字精度丢失。后两位变为零,导致前台进行数据表格更改对应记录行时因为id不一致修改数据不成功,删除时也无法根据不一样的id删除。几经周折跟踪数据流转环节,发现在后台查询时正确无误,js中19位数字后两位变为零。查询相关资料后得知js中long类型的数字再超过17位后就会精度丢失,具体解决方案有2种。
一:在使用lombook的实体类中修改id类型为String即可避免数字精度到前端时改变。
二:使用框架中含有的JSON转换器注解在返回前端时转为json的string类型,具体做法在属性上加@JsonSerialize(using=ToStringSerializer.class)注解即可。