java - 房间数据库 - 编辑实体

标签 java android android-room android-database android-jetpack

我有一个问题。我从这里编辑了我的房间实体:

@Entity(tableName = "users")
public class User {

public User(String username, String email, String password){
    this.username = username;
    this.email = email;
    this.password = password;
}

public User() {}

@PrimaryKey
@ColumnInfo(name = "Username")
private String username;

@ColumnInfo(name = "Email")
private String email;

@ColumnInfo(name = "Password")
private String password;

//getters setters

到这个表格:

@Entity(tableName = "users")
public class User {

public User(String username, String email, String password){
    this.username = username;
    this.email = email;
    this.password = password;
}

public User() {}


//changes here, move userId to int instead of username
@NonNull
@PrimaryKey(autoGenerate = true)
private int id;

@NonNull
@ColumnInfo(name = "Username")
private String username;

@ColumnInfo(name = "Email")
private String email;

@ColumnInfo(name = "Password")
private String password;

//getters setters.

这就是我的 RoomDatabase 类:

@Database(entities = {User.class}, version = 1)
public abstract class ApplicationDatabase extends RoomDatabase {

public abstract UserDao userDao();
}

我的问题是,如果我的 Android 设备中的数据库发生变化,我何时编辑实体?如果我的数据库中有数据怎么办?如果我需要先删除我设备上的数据库?我的用户构造函数怎么样,它现在可以工作了吗?

谢谢你的建议

最佳答案

当您编辑实体时,您需要更改数据库的版本,在这种情况下,将注释更改为@Database(entities = {User.class}, version = 2)

由您决定是要删除数据库的旧数据还是要将旧版本迁移到新版本(如果您有用户群但不想要它们,我会推荐它丢失他们在数据库中保存的数据,否则我建议您删除旧数据库中的信息,因为这是更简单的解决方案。

如果您想进一步阅读有关迁移房间数据库的信息,我添加了一个链接:

https://developer.android.com/training/data-storage/room/migrating-db-versions

关于java - 房间数据库 - 编辑实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54379810/

相关文章:

java - 如何抽象主题化组件的想法?

java - for 循环与 if-else 语句中的代码

java - 如何安全地删除 ArrayList 上的逗号?

android - List<String> 作为@ForeignCollectionField ormlite

android - Fragments 和 FragmentPagerStateAdapter - 重新创建具有相同 ID 的 View 失败

android - 在android中,是否必须在主线程之外的房间中编写查询?

java - 垂直图像旋转

java - 是否可以在没有应用程序服务器的情况下使用 JMS 服务器?

android - 排队/保存改造请求并在互联网连接不佳/没有互联网连接时发送它们

java - 房间数据库实例无法解析 DAO 方法的符号