重命名领域 table
Rename Realm table
我的领域方案中有一个 Gift
table。现在我需要将 Gift.class
重命名为 UserBonus.class
并添加一些新参数(不是概率)。正确的做法是什么?
我知道 realm.getTable()
可以 return 我 table,问题是旧的 Gift
存在于模式中但事实上我没有 Gift.class
(现在是 UserBonus
并且 getTable()
将 return 我新创建的 table)所以我不能得到旧的礼物 table 价值并将它们移动到新的奖金table.
我看到的唯一方法是留空 Gift.class
并仅将其用于迁移。
感谢任何建议,
雅科夫
目前我是这样实现的:
- 新增
UserBonus.class
- 将 @Deprecated 添加到
Gift.class
将Gift
table的所有数据复制到UserBonus
table
// added bonus types
Table userBonus = realm.getTable(UserBonus.class);
userBonus.addColumn(ColumnType.STRING, "localId");
userBonus.addColumn(ColumnType.INTEGER, "type");
userBonus.addColumn(ColumnType.INTEGER, "date");
userBonus.addColumn(ColumnType.STRING, "userName");
userBonus.addColumn(ColumnType.STRING, "userNumber");
userBonus.addColumn(ColumnType.STRING, "credits");
// move Gift to UserBonus
RealmResults<Gift> gifts = realm.where(Gift.class).findAll();
for (Gift gift :gifts) {
userBonus.add(
gift.getLocalId(),
UserBonus.TYPE_FRIEND,
gift.getDate(),
gift.getUserName(),
gift.getUserNumber(),
gift.getCredits()
);
}
realm.where(Gift.class).findAll().clear();
也许我的回答会过时,但是现在在Android上的Realm中有一个方法'rename',可以重命名scheme中的table(模型)。
代码将是这样的:
RealmSchema schema = Realm.getInstance().getSchema();
schema.rename("OldModelName", "NewModelName");
它应该有效!
您还可以在迁移中看到所有功能(自 2015 年 6 月 25 日起)- https://github.com/realm/realm-java/pull/1239
我的领域方案中有一个 Gift
table。现在我需要将 Gift.class
重命名为 UserBonus.class
并添加一些新参数(不是概率)。正确的做法是什么?
我知道 realm.getTable()
可以 return 我 table,问题是旧的 Gift
存在于模式中但事实上我没有 Gift.class
(现在是 UserBonus
并且 getTable()
将 return 我新创建的 table)所以我不能得到旧的礼物 table 价值并将它们移动到新的奖金table.
我看到的唯一方法是留空 Gift.class
并仅将其用于迁移。
感谢任何建议,
雅科夫
目前我是这样实现的:
- 新增
UserBonus.class
- 将 @Deprecated 添加到
Gift.class
将
Gift
table的所有数据复制到UserBonus
table// added bonus types Table userBonus = realm.getTable(UserBonus.class); userBonus.addColumn(ColumnType.STRING, "localId"); userBonus.addColumn(ColumnType.INTEGER, "type"); userBonus.addColumn(ColumnType.INTEGER, "date"); userBonus.addColumn(ColumnType.STRING, "userName"); userBonus.addColumn(ColumnType.STRING, "userNumber"); userBonus.addColumn(ColumnType.STRING, "credits"); // move Gift to UserBonus RealmResults<Gift> gifts = realm.where(Gift.class).findAll(); for (Gift gift :gifts) { userBonus.add( gift.getLocalId(), UserBonus.TYPE_FRIEND, gift.getDate(), gift.getUserName(), gift.getUserNumber(), gift.getCredits() ); } realm.where(Gift.class).findAll().clear();
也许我的回答会过时,但是现在在Android上的Realm中有一个方法'rename',可以重命名scheme中的table(模型)。 代码将是这样的:
RealmSchema schema = Realm.getInstance().getSchema();
schema.rename("OldModelName", "NewModelName");
它应该有效!
您还可以在迁移中看到所有功能(自 2015 年 6 月 25 日起)- https://github.com/realm/realm-java/pull/1239