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.