Android Ormlite更改模型字段类型

时间:2016-03-17 07:50:44

标签: android ormlite

我想将模型字段类型从double更改为BigDecimal,将String更改为BigDecimal(参见下文)。

旧模型:

@DatabaseField
private double val1;
@DatabaseField
private String val2;
@DatabaseField
private double val3;

新模式:

@DatabaseField
private BigDecimal val1;
@DatabaseField
private BigDecimal val2;
@DatabaseField
private BigDecimal val3;

我应该在onUpgrade方法中进行任何更改并增加数据库版本吗?我应该选择哪种方法来纠正它?

例如:

  1. 将val1列复制到copy_val1
  2. 删除val1列,并创建一个新列(正确的列类型)
  3. 使用强制转换
  4. 将数据从copy_val1复制到val1列
  5. 删除copy_val1列

1 个答案:

答案 0 :(得分:1)

根据ORMLite data type docsdoubleBigDecimal不受相同的ORMLite数据类型管理。 StringBigDecimal也是如此。所以,是的,您必须进行更新并增加版本。

onUpdate中你可以:

  1. 使用正确的列类型
  2. 创建新列'val1_aux'
  3. 更新新列,取旧值。
  4. 删除旧列。
  5. 将新列从val1_aux重命名为val1
  6. 我认为不需要创建另一个中间列。