@Document(collection = "loanDetails")
class LoanDetails {
@Transient
public static final String COLLECTION_NAME = "loanDetails
@Id
String id
String loanId
String loanUUID
String loanStatus
Date loanDateCreated
Date loanLastUpdated
BigDecimal loanAmount //Stores in String
}
我声明了一个类LoanDetails和一个包含BigDecimal类型loanAmount的字段每当我在这个集合中保存一些数据时
1.它以字符串的形式存储在mongo db数据库中
1.从数据库中获取记录时,出现错误无法解码'LoandDetails'。解码'loanAmount'时出错:只有在CurrentBSONType为DECIMAL128时才能调用readDecimal,而在CurrentBSONType为STRING时不能调用。
我试图在loanAmount字段上添加注解
@Field(targetType = Decimal128) // This also throws error does not contain targetType attribute attached screenshot for the same
BigDecimal loanAmount
2条答案
按热度按时间new9mtju1#
您 可能 需要 删除/迁移 已经 创建 的
loanDetails
, 因为loanAmount
字段 被 持久 化 为String
。通过 将
@Field(targetType = FieldType.DECIMAL128)
添加 到 您 的loanAmount
字段 , 它 应该 可以 工作 。中 的 每 一 个
如果 你 得到
Conversion to Decimal128 would require inexact rounding of XXX
注意 :
Decimal128
类型 最 多 只 支持 34 位 精度 。 ( 通常 , " precision " = 总 位 数 , 而 " scale " = 小数 位 数 ) 。 而 Java BigDecimal 可以 更 高 。 因此 , 在 保存 到 DB 之前 , 您 需要 舍入 BigDecimal 值 ( 例如 , 使用BigDecimal.setScale()
) 方法 。BigDecimalConverter issue 的 最 大 值|十进制 128
eivgtgni2#
您可以在mongo config中注册自定义转换
在那里进行转换