This is my Database.
@Database(entities = {Word.class}, version = 1, exportSchema = false)
public abstract class WordsDatabase extends RoomDatabase {
private static final String DB_NAME = "words";
private static WordsDatabase database;
private static final Object LOCK = new Object();
public static WordsDatabase getInstance(Context context) {
synchronized (LOCK){
if(database == null) {
database = Room.databaseBuilder(context,WordsDatabase.class, DB_NAME)
.createFromAsset("words.db")
.allowMainThreadQueries()
.build();
Log.i("1111", "database was created now");
} else {
Log.i("1111", "was already created");
}}
return database;
}
public abstract WordsDao wordsDao();
This is my Dao
@Dao
public interface WordsDao {
@Query("SELECT * FROM pronouns")
List<Word> getAllWords();
@Query("SELECT * FROM pronouns WHERE wordRus == :wordRus")
Word getWordByWord(String wordRus);
This is my Entity
@Entity(tableName = "pronouns")
public class Word {
@PrimaryKey
private int position;
private String wordRus;
private String wordHin;
private String wordDev;
private int progress;
1 constructor with all fields, getters, setters...
this is my onCreate()
database = WordsDatabase.getInstance(this);
Word word = database.wordsDao().getWordByWord("я");
Log.i("1111", word.getWordRus());
This is my log
I/1111: database was created now
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String com.vazheninapps.hindipoliglot.data.Word.getWordRus()' on a
null object reference
This is my words.db in assets(SQL2 database) SQLSTUDIOIMAGE
what i am doing wrong? Why database null? I also try method getAllWords(). and return size of list. it is 0.