【问题标题】:When getting data from the cache, zeros are lost从缓存中获取数据时,零会丢失
【发布时间】:2019-01-10 10:54:59
【问题描述】:

我有一个存储在数据库中的实体

public class data {
    @Column(name = "id")
    final String id;
    @Column(name = "length")
    final BigDecimal length;
}

当您从缓存中反序列化并检索数据时,我会丢失零

预期:

data{id=3, length=6.00}

实际

data{id=3, length=6}

【问题讨论】:

  • 指定精度限制十进制数字的最大数量,而不是最小值。如果您想以特定格式显示或写入,请使用DecimalFormat.format(..)
  • 根据使用的缓存,它可能会序列化缓存的值。您看到的效果可能源于序列化和反序列化。
  • @LouisJacomet 在 BD 中的值存储正确。从缓存中获取反序列化的本质

标签: java hibernate caching spring-data-jpa ehcache


【解决方案1】:

尝试设置@Column 注释的precisionscale 属性。

见:https://docs.jboss.org/hibernate/jpa/2.1/api/javax/persistence/Column.html

【讨论】:

  • 我使用它,但显然,反序列化时真的会丢失零
【解决方案2】:

是的。如果您的列指定了足够的精度,数据库将以正确的精度保存数字。所以decimal(14,4) 最多保留 4 位小数。

但是,它不会记住原始精度。小数的比例。如果你真的关心它,你也需要存储它。或者将您的号码存储为字符串。

这个问题实际上是this one的重复。

【讨论】:

  • 如果您认为问题是重复的,请投票关闭它而不是回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 2019-06-14
  • 2020-01-15
相关资源
最近更新 更多