如何使用ObjectBox存储货币值(BigDecimal)?

时间:2017-09-18 11:12:02

标签: android objectbox

为了表示金钱价值,我使用BigDecimal是因为准确性(双重类型导致错误)。那么,我如何在ObjectBox中存储BigDecimal值,我应该使用哪种类型的字段或转换器?

1 个答案:

答案 0 :(得分:5)

BigDecimal没有默认支持,因此您必须创建Converter。这是一个例子:

public class BigDecimalConverter implements PropertyConverter<BigDecimal, String> {

    @Override
    public BigDecimal convertToEntityProperty(String databaseValue) {
        return new BigDecimal(databaseValue);
    }

    @Override
    public String convertToDatabaseValue(BigDecimal entityProperty) {
        return entityProperty.toString();
    }
}

@Entity
public class BigDecimalEntity {

    @Convert(dbType = String.class, converter = BigDecimalConverter.class)
    private BigDecimal decimal;

    public BigDecimal getDecimal() {
        return decimal;
    }

    public void setDecimal(BigDecimal decimal) {
        this.decimal = decimal;
    }
}