Я пытаюсь получить данные из базы данных Firebase, чтобы добавить их в локальную базу данных.
Этот код:
database = FirebaseDatabase.getInstance();
myRef = database.getReference();
Query LANGUAGES_REF = myRef.child("languages").orderByChild("id");
LANGUAGES_REF.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
if (dataSnapshot.hasChildren()) {
Iterator<DataSnapshot> iterator = dataSnapshot.getChildren().iterator();
do {
Language language = iterator.next().getValue(Language.class);
languageR.insert(language);
} while (iterator.hasNext());
}
не работает, и я знаю, что это так, потому что Language.class является сущностью.Есть ли способ, кроме создания нового класса с геттерами и сеттерами и полным конструктором ... и повторения всего ??
Я получил ошибку:
com.google.firebase.database.DatabaseException: не удается преобразовать объект типа java.lang.Long в тип com.android.android.Database.Entities.Language
в этой строке:
Language language = iterator.next().getValue(Language.class);
Спасибо
редактировать: структура базы данных Firebase
"languages" : {
"LHZ7cAeOdPn-LwHNjIk" : {
"id" : 1,
"langName" : "Russian"
},
"LHZ7cAtXTGBlnWsdQOd" : {
"id" : 2,
"langName" : "French"
},
"LHZ7cAvrRs0rgI-PaJd" : {
"id" : 3,
"langName" : "Turkish"
}
}
language.class
import java.io.Serializable;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity
public class Language implements Serializable {
@PrimaryKey(autoGenerate = true)
private int id;
private String langName;
public int getId() {
return id;
}
public String getLangName() {
return langName;
}
public Language(String langName) {
this.langName = langName;
}
public void setId(int id) {
this.id = id;
}
}