Android room persistent: AppDatabase_Impl does not exist

前端 未结 21 1395
日久生厌
日久生厌 2020-11-29 01:09

My app database class

@Database(entities = {Detail.class}, version = Constant.DATABASE_VERSION)
public abstract class AppDatabase extends RoomDatabase {

            


        
相关标签:
21条回答
  • 2020-11-29 01:41

    Not in the case of OP, but this also happens when you mistakenly use implementation instead of annotationProcessor like this:

    implementation "android.arch.persistence.room:compiler:x.x.x"
    

    Instead of this:

    annotationProcessor "android.arch.persistence.room:compiler:x.x.x"
    
    0 讨论(0)
  • 2020-11-29 01:42

    Use the following gradle link:

    compile 'android.arch.persistence.room:runtime:1.0.0-alpha9'
    annotationProcessor 'android.arch.persistence.room:compiler:1.0.0-alpha9'
    

    You need to create diffretn singloton class and get the Appdatabase from ther like this:

    RoomDB.java

    public class RoomDB {
    
    private static RoomDB INSTANCE;
    
    public static AppDatabase getInstance(Context context) {
        if (INSTANCE == null) {
            INSTANCE =
                    Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, Constant.DATABASE).allowMainThreadQueries().build();
    
                    //Room.inMemoryDatabaseBuilder(context.getApplicationContext(),AppDatabase.class).allowMainThreadQueries().build();
        }
        return INSTANCE;
    }
    
    public static void destroyInstance() {
        INSTANCE = null;
    }
    

    App.java

    public class App extends Application {
    
    private boolean appRunning = false;
    
    @Override
    public void onCreate() {
        super.onCreate();
        RoomDB.getInstance(this); //This will provide AppDatabase Instance
    }
    
    0 讨论(0)
  • 2020-11-29 01:42

    Changing the dependencies in my gradle file did'nt help me in fixing the error.I had missed this Database annotation in class where Room database was initialized which was causing this issue.

    @Database(entities = [UserModel::class], version = 1)

    Ensure that the entity model specified in the annotation above refers to the particular model class

    0 讨论(0)
提交回复
热议问题