I am getting following exception for android room database
java.lang.IllegalArgumentException: @androidx.room.Database does not define an element views()
I tried to search for any solution on SO but was not able to find any. Can anyone explain whats this error related to ?
I am using java only in My room database.I am not using kotlin. Library versions
roomVersion = '2.2.1'
archLifecycleVersion = '2.1.0'
Defined Entities
,Dao
and a class that extends roomdatabase
public static TncWalletAppDatabase getDatabase(final Context context) {
if (INSTANCE == null) {
synchronized (TncWalletAppDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
TncWalletAppDatabase.class, "tnc_app_database")
.addCallback(sRoomDatabaseCallback)
.allowMainThreadQueries()
.build();
}
}
}
return INSTANCE;
}
This is my method to initialize the db. Any help on this is really appreciated.
Database class :
@Database(entities = {Merchant.class, MerchantProfile.class, Receipt.class, ReceiptItems.class,TncTransaction.class}, version = 1)
public abstract class TncWalletAppDatabase extends RoomDatabase {
private static TncWalletAppDatabase INSTANCE;
public abstract MerchantDao mMerchantDao();
public abstract MerchantProfileDao mMerchantProfileDao();
public abstract ReceiptDao mReceiptDao();
public abstract ReceiptItemsDao mReceiptItemsDao();
public abstract TncTransactionDao mTncTransactionDao();
public static TncWalletAppDatabase getDatabase(final Context context) {
if (INSTANCE == null) {
synchronized (TncWalletAppDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
TncWalletAppDatabase.class, "tnc_app_database")
.addCallback(sRoomDatabaseCallback)
.allowMainThreadQueries()
.build();
}
}
}
return INSTANCE;
}
private static RoomDatabase.Callback sRoomDatabaseCallback = new RoomDatabase.Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
// database trigger for tnc_transaction table
new CreateDatabaseTriggerOnTncTransaction().execute();
}
};
private static class CreateDatabaseTriggerOnTncTransaction extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(final Void... params) {
/**
* Create database trigger when the tnc transaction table is created.
*/
SupportSQLiteDatabase supportSQLiteDatabase = INSTANCE.getOpenHelper().getWritableDatabase();
if( supportSQLiteDatabase != null ) {
String TABLE_NAME = "tnc_transaction";
supportSQLiteDatabase.execSQL(
"CREATE TRIGGER IF NOT EXISTS delete_" + TABLE_NAME + "_logs_max " +
"BEFORE INSERT ON " + TABLE_NAME + " " +
"WHEN (SELECT COUNT(*) FROM " + TABLE_NAME + ") > "
+ TncTransactionDao.MAX_ROW_COUNT +
" " + " BEGIN DELETE FROM " + TABLE_NAME + " WHERE id = "
+ "(SELECT MIN(id) FROM " + TABLE_NAME + "); " +
"END;");
}
return null;
}
}
}