Dao is NULL in room database

Viewed 3476

This is my database class:

@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract UserDao userDao();
}

The problem is: userDao() returns null after instantiating a AppDatabase.

This is UserDao:

@Dao
public interface UserDao {
    @Query("SELECT * FROM user")
    List<User> getAll();

    @Query("SELECT * FROM user WHERE id IN (:userIds)")
    List<User> loadAllByIds(int[] userIds);

    @Query("SELECT * FROM user WHERE first_name LIKE :first AND "
            + "last_name LIKE :last LIMIT 1")
    User findByName(String first, String last);

    @Insert
    void insert(User... users);

    @Delete
    void delete(User user);

    @Query("SELECT * FROM user ORDER BY last_name ASC")
    LivePagedListProvider<Integer, User> usersByLastName();
}

And this is how I instantiate a database:

AppDatabase database = Room.databaseBuilder(context, AppDatabase.class, "database-name").build();

And I'm getting the below exception when trying to call userDao() on AppDatabase instance.

java.lang.RuntimeException: Unable to start activity ComponentInfo{mk.forum/mk.test.MyActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'mk.test.UserDao mk.test.AppDatabase.userDao()' on a null object reference

I'm running this on Moto G5 (Android 7.0), I have no emulator.

0 Answers
Related