下面是我的AppDatabase代码。一开始我只将ChatUser
和ChatMessage
作为实体,这两个实体工作得很好,但后来我想添加Well
s,我把它们都整理好并添加到这个类中,以及预初始化数据库的回调中的2行代码。问题是这是行不通的。即使我更改版本号或卸载应用程序,数据库也不会预初始化。这是它工作时的第一个版本,所以我还没能在数据库上成功迭代。请帮帮我!
@Database(entities = {ChatUser.class, ChatMessage.class, Well.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
public abstract UserDao userDao();
public abstract MessageDao messageDao();
public abstract WellDao wellDao();
public static AppDatabase getAppDatabase(final Context context) {
Log.d("AppDatabase", "getting app database");
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "curadite-database")
.fallbackToDestructiveMigration()
.addCallback(new Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
Log.d("AppDatabase", "OnCreate");
Executors.newSingleThreadExecutor().execute(new Runnable() {
@Override
public void run() {
ChatUser user = new ChatUser("Me", true);
ChatMessage message = new ChatMessage("Hello!", 1, System.currentTimeMillis());
AppDatabase db = getAppDatabase(context);
db.userDao().insertAll(user);
db.messageDao().insertAll(message);
Well[] wells = new Curapac(7, 2).flatWells();
db.wellDao().insertAll(wells);
}
});
}
})
.build();
}
return INSTANCE;
}
https://stackoverflow.com/questions/50937986
复制相似问题