1

I want to update only specific columns in my table in my Rooms database, and am using the target entity class by Android Rooms. However, when I execute the function, the value in the table does not get updated. Below are the activity class code, dao interface, my flight class, repository and view model code for this update function.

**Activity class**

flightViewModel.getAllFlights().observe(FlightDescriptionActivity.this, new Observer<List<Flight>>() {
          @Override
           public void onChanged(List<Flight> flights) {

           CateringTime cateringTime = new CateringTime("End",currentTime,currentTime,"These are catering comments");   
           flightViewModel.updateCateringData(cateringTime);
                  
                    }
                });

**FlightDao interface**

@Update(entity = Flight.class)
public void updateCateringData(CateringTime... cateringTimes);


**Flight Class** 

class CateringTime {

    //catering
     private String catering_button_status;
     private String catering_start_time;
     private String catering_end_time;
     private String catering_comments;

    //primary keys

    String flightNumber;
    String date;

    public CateringTime(String catering_button_status, String catering_start_time, String catering_end_time, String catering_comments) {
        this.catering_button_status = catering_button_status;
        this.catering_start_time = catering_start_time;
        this.catering_end_time = catering_end_time;
        this.catering_comments = catering_comments;
    }


**Flight repository class**

public void updateCateringData(CateringTime... cateringTimes){
        new UpdateCateringDataAsyncTask(flightDao).execute(cateringTimes);
    }



private static class UpdateCateringDataAsyncTask extends AsyncTask<CateringTime, Void, Void> {

        private FlightDao flightDao;
        private UpdateCateringDataAsyncTask(FlightDao flightDao) {
            this.flightDao = flightDao;
        }

        @Override
        protected Void doInBackground(CateringTime... cateringTimes) {
            flightDao.updateCateringData(cateringTimes);
            return null;
        }
    }
}


**Flight View Model class** 


public void updateCateringData(CateringTime... cateringTimes) {
        
        repository.updateCateringData(cateringTimes);
    }

Where I am going wrong?

Ian Bell
  • 533
  • 5
  • 18

1 Answers1

0

Could you do something like this

@Query("UPDATE catering_time SET column = :column WHERE id = :id")
public void updateCateringColumn(String id, String column);
Juan Fraga
  • 434
  • 3
  • 9