【发布时间】:2018-06-19 22:53:52
【问题描述】:
这是我的 AppDatabase 代码。我从 ChatUser 和 ChatMessage 开始,它们工作得很好,但后来我想添加 Wells。我把它们全部整理出来,并将它们与预初始化数据库的回调中的 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;
}
【问题讨论】:
标签: java android android-sqlite android-room