2016-06-22 3 views
3

Я пытаюсь сделать запрос к моему приложению с Firebase. Я могу сохранить данные, но когда я пытаюсь их извлечения, я получаю эту ошибкуИгнорировать то, что не внутри POJO

06-20 12:07:15.151 28158-28158/sgk.com.br.sgk E/AndroidRuntime: FATAL EXCEPTION: main 
Process: sgk.com.br.sgk, PID: 28158 
com.firebase.client.FirebaseException: Failed to bounce to type 
    at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:183) 
    at sgk.com.br.sgk.Activity.GreatTrainsActivity$1.onDataChange(GreatTrainsActivity.java:65) 
    at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45) 
    at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45) 
    at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38) 
    at android.os.Handler.handleCallback(Handler.java:746) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5443) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "vdsrXOFXRZbAfmoEQ3WEVB1GDDa2" (class sgk.com.br.sgk.Others.Train), not marked as ignorable (2 known properties: , "description", "local"]) 
    at [Source: [email protected]; line: 1, column: 34] (through reference chain: sgk.com.br.sgk.Others.Train["vdsrXOFXRZbAfmoEQ3WEVB1GDDa2"]) 
    at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:555) 
    at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:708) 
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1160) 
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:315) 
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121) 
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888) 
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034) 
    at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:181) 
    at sgk.com.br.sgk.Activity.GreatTrainsActivity$1.onDataChange(GreatTrainsActivity.java:65)  
    at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45)  
    at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45)  
    at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38)  
    at android.os.Handler.handleCallback(Handler.java:746)  
    at android.os.Handler.dispatchMessage(Handler.java:95)  
    at android.os.Looper.loop(Looper.java:148)  
    at android.app.ActivityThread.main(ActivityThread.java:5443)  
    at java.lang.reflect.Method.invoke(Native Method) 

Я уже понять, в чем проблема.

Моя база данных была как та

{ 
    "Train" : { 
    "description" : "dbdjem", 
    "local" : "shsusn" 
    }, 
    "users" : { 
    "f01dfa18-54ac-41ea-97ff-97d0e40b872b" : { 
     "email" : "[email protected]" 
    }, 
    "vdsrXOFXRZbAfmoEQ3WEVB1GDDa2" : { 
     "email" : "[email protected]" 
    } 
    } 
} 

Если удалить все остальное, кроме того, что в POJO, она работает очень хорошо.

Итак, объяснил это, мой вопрос: есть ли способ игнорировать все остальное в базе данных, кроме того, что есть на моем POJO?

EDIT

Вот мой POJO

public class Train { 

    private String local; 
    private String description; 
    public String data; 

    public Train() { 
    } 

    public String getLocal() { 
     return local; 
    } 

    public void setLocal(String local) { 
     this.local = local; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    @Exclude 
    public String getData(){return data;} 
} 

А вот вызов

Firebase ref = new Firebase(Constants.FIREBASE_URL); 
ref.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     for (DataSnapshot postSnapshot: snapshot.getChildren()) { 
      //Getting the data from snapshot 
      Train train = postSnapshot.getValue(Train.class); 
      //Adding it to a string 
      String string = "Local: " + train.getLocal() + "\nDescrição: " + train.getDescription() + "\n\n"; 
      //Displaying it on textview 
      textViewPersons.setText(string); 
     } 
    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
     System.out.println("The read failed: " + firebaseError.getMessage()); 
    } 
}); 
+0

Можете ли вы показать код, который читает данные (то есть что-то с вызовом 'DataSnapshot.getValue()') и ваш POJO? –

+0

Фрэнк, я отредактировал то, что вы просили. Спасибо –

+0

@FrankvanPuffelen Извините, кажется, что мы ударили, чтобы спасти почти togheter. (dale grêmio @ LeonardoAssunção): P – adolfosrs

ответ

4

Вы прикрепление ChildEventListener в корень вашей базы данных. Дети в возрасте до этого корня являются:

Train 
users 

Ни один из этих припадков в Train класса Java, который вы создали.

Решение прикрепить слушателя к Trains узла с:

Firebase ref = new Firebase(Constants.FIREBASE_URL); 
ref.child("Trains").addValueEventListener(new ValueEventListener() { 
    ... 
+0

Спасибо, Фрэнк! Хорошо работает –

Смежные вопросы