Проблема с добавлением записей в firebase и Room в android-приложении
У меня есть класс со следующими конструкторами (прикрепляю скрин).
Однако при попытке создать экземпляр класса и записать его в вышеупомянутые базы данных, процессы то ли в Firebase, то ли в Room создают объект через пустой конструктор, и он никуда не записывается. При этом удалить пустой конструктор нельзя, т.к. Firebase его требует.
Методы, через которые обращаюсь к БД, выглядят так:
(во ViewModel)
public void addTask(String uid, String name, int color, LocalDate date, int sectionIndex) {
MyTask myTask = new MyTask(null, uid, name, color, date, sectionIndex);
AddNewTaskUseCase addNewTaskUseCase = new AddNewTaskUseCase(repo);
addNewTaskUseCase.execute(myTask, () -> updateLists(date.toString()));
}
(в репозитории)
public void insertTask(MyTask myTask, Runnable onInserted) {
dataSource.insertTask(myTask)
.addOnSuccessListener(aVoid -> {
executor.execute(() -> {
dao.insertTask(myTask);
Log.d("ChronoSnap", "вызван insertTask");
if (onInserted != null){
new Handler(Looper.getMainLooper()).post(onInserted);
Log.d("ChronoSnap", "в потоке");
}
});
})
.addOnFailureListener(e -> {
Log.e("ChronoSnap", "Ошибка при добавлении задачи в Firestore");
});
}
(в Dao)
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertTask(MyTask myTask);
(при обращении к firestore)
public Task<Void> insertTask(MyTask myTask) {
return FirebaseFirestore.getInstance()
.collection("tasks")
.document(myTask.getId())
.set(myTask);
}
Совсем не понимаю как решить проблему, заранее благодарю за помощь.