Long类型Id,后端返回数据和前端的netWork里接收与后端不一致,尾数都是0

解决Long类型精度丢失问题

** 今天发现删除时前端传过来的ID参数不对,数据并没有删掉。
但是这个传过来的ID参数 很奇怪,数据库中并没有这个ID,查询时传过去的ID 也并不是这个。**

于是我去看查询方法,(这时离解决bug的脚步越来越近了)

在查询方法中,我传到前端的ID是1668450124026482768,并且这个ID与数据库的ID是一致的。

这是后端返回的数据
但是很奇怪,前端的NetWork中接收到的并不是这个ID,而且通过观察我发现,前端接收到的后几位都是0

这是前端接收到的数据
此图为前端接收到的数据

后来想到应该是Long类型精度丢失问题。因为后面几个都是0。

那么如何解决这个问题呢?

可以用@JsonSerialize(using = ToStringSerializer.class)注解。
这是一个自定义序列化器,这个注解的意思是:告诉JSON库,在序列化该对象时,使用ToStringSerializer类作为序列化器,ToStringSerializer是Jackson库中的一个默认序列化器,它将指定的字段转化为toString()方法的返回值,并将其作为JSON字符串的值。
如此就可以解决Long类型精度丢失问题。

@Getter
@Setter
@TableName("SEED_UNITSETUP")
public class SeedUnitSetup {

    /** 主键 */
    @TableId(value ="id",type = IdType.AUTO)
    @ApiModelProperty(value = "主键", position = 1)
    @JsonSerialize(using = ToStringSerializer.class)//解决long类型精度丢失问题
    private Long id;

那么此时,前端接收到的数据就正确了。我的删除和编辑bug也随之解决~

在这里插入图片描述

这里要感谢一位博主,这里附上他的链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值