2

I am using room database in android studio when run query like Select * from table_name it is working but if I apply some conditions like WHERE then false response.

The same conditional query run on DB Browser for SQLite then it is working fine.

public interface SubscriptionDataDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
long insert(SubscriptionData subscriptionData);

@Query("DELETE FROM " + TABLE_MEMBER_SUBSCRIPTION_DATA)
void deleteAll();

@Query("SELECT * FROM " + TABLE_MEMBER_SUBSCRIPTION_DATA
        + " WHERE " + "subscription_status = " + Values.SUBSCRIPTION_ACTIVE)
LiveData<List<SubscriptionData>> getMemberSubscriptionDetails();}

View Model class

public LiveData<List<SubscriptionData>> getSubscriptionDetailsLiveData() {
    return subscriptionDataDao.getMemberSubscriptionDetails();
}

Fragment

subscriptionViewModel.getSubscriptionDetailsLiveData().observe(getViewLifecycleOwner(), subscriptionData -> {
            Log.e("BuySubscriptionFragment", "Plan Name: "+subscriptionData.size());
    });

Error Which i getting

NullPointerException: Attempt to invoke interface method 'androidx.lifecycle.LiveData com.actofit.beat.room.SubscriptionDataDao.getMemberSubscriptionDetails()' on a null object reference

I am not able to find where is the issue.

  • 1
    I would query like this: @Query("SELECT * FROM :tableMemberSubscription WHERE subscription_status = :subscriptionIsActive") suspend fun getMemberSubscriptionDetails(tableName:String, subscriptionIsActive): Flow> And in a Flow. You can make it to LivaData in the ViewModel with .asLiveData() – writer_chris Aug 09 '22 at 04:51

0 Answers0