Java 重命名领域表

Java 重命名领域表,java,android,realm,Java,Android,Realm,我的王国计划中有一个礼物表。现在我需要将Gift.class重命名为UserBonus.class,并添加一些新参数(不是问题)。正确的方法是什么 我知道realm.getTable()可以将表返回给我,问题是模式中存在旧的Gift,但事实上我没有Gift.class(现在是UserBonus,而getTable()将返回给我新创建的表),因此我无法获取旧的Gift表值并将它们移动到新的Bonus表 我看到它的唯一方法是,将其留空Gift.class,并仅用于迁移 谢谢你的建议, Yakiv目前

我的王国计划中有一个
礼物
表。现在我需要将
Gift.class
重命名为
UserBonus.class
,并添加一些新参数(不是问题)。正确的方法是什么

我知道
realm.getTable()
可以将表返回给我,问题是模式中存在旧的
Gift
,但事实上我没有
Gift.class
(现在是
UserBonus
,而
getTable()
将返回给我新创建的表),因此我无法获取旧的Gift表值并将它们移动到新的Bonus表

我看到它的唯一方法是,将其留空
Gift.class
,并仅用于迁移

谢谢你的建议,

Yakiv

目前,我确实按照以下方式实施了它:

  • 添加了新的
    UserBonus.class
  • 将@Deprecated添加到
    Gift.class
  • 将所有数据从
    Gift
    表复制到
    UserBonus

    // 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();
    
    //添加了奖金类型
    表userBonus=realm.getTable(userBonus.class);
    userBonus.addColumn(ColumnType.STRING,“localId”);
    userBonus.addColumn(ColumnType.INTEGER,“type”);
    userBonus.addColumn(ColumnType.INTEGER,“日期”);
    userBonus.addColumn(ColumnType.STRING,“用户名”);
    userBonus.addColumn(ColumnType.STRING,“userNumber”);
    userBonus.addColumn(ColumnType.STRING,“credits”);
    //将礼物移动到用户奖金
    RealmResults gives=realm.where(Gift.class).findAll();
    用于(礼物:礼物){
    userBonus.add(
    gift.getLocalId(),
    UserBonus.TYPE_FRIEND,
    gift.getDate(),
    gift.getUserName(),
    gift.getUserNumber(),
    gift.getCredits()
    );
    }
    realm.where(Gift.class).findAll().clear();
    

也许我的答案会过时,但现在在Android的领域中有一种方法“重命名”,可以在scheme中重命名表(模型)。 代码如下所示:

RealmSchema schema = Realm.getInstance().getSchema();
schema.rename("OldModelName", "NewModelName"); 
它应该会起作用

您还可以看到迁移中的所有功能(从2015年6月25日起)——