我们必须将实体中的一个字段参数从 迁移long
到BigDecimal
. 迁移很顺利,但是有问题;我们希望将以前的值设置为迁移的字段。但是一旦ObjectBox
被初始化,它会将 migrated 字段默认为当前类型的默认值,在我们的例子中为null
.
假设我们有:
标识(长) | 姓名 |
---|---|
123 | 随机名称 |
迁移后我们得到:
标识(字符串) | 姓名 |
---|---|
无效的 | 随机名称 |
是否有任何可能的迁移方式而不会丢失已迁移字段的值?
附注:我使用转换器来保留BigDecimal
值,因为ObjectBox
不支持BigDecimal
转换器类:
public class BigIntegerStringConverter implements PropertyConverter<BigInteger, String> {
@Override
public BigInteger convertToEntityProperty(String databaseValue) {
return databaseValue == null ? null : new BigInteger(databaseValue);
}
@Override
public String convertToDatabaseValue(BigInteger entityProperty) {
return String.valueOf(entityProperty);
}
}
用法:
@Convert(converter = BigIntegerStringConverter.class, dbType = String.class)
@Uid(XXXXXXXX)
BigInteger tigerId;