Android W/ClassMapper:在类上找不到*键*的setter/字段

Android W/ClassMapper:在类上找不到*键*的setter/字段,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,因此,我试图将单个用户的配置文件加载到一个对象中,问题是程序确实获得了我所拥有的引用的所需密钥,但当应用程序获得配置文件对象并且其所有getter返回null时,就会发生错误 以下是我的日志打印的内容: W/ClassMapper: No setter/field for -K2Hh5c8ltlwIXNO44Rp found on class com.example.android.firetest.models.Profiles I/System.out: the user's id: nu

因此,我试图将单个用户的配置文件加载到一个对象中,问题是程序确实获得了我所拥有的引用的所需密钥,但当应用程序获得配置文件对象并且其所有getter返回null时,就会发生错误

以下是我的日志打印的内容:

W/ClassMapper: No setter/field for -K2Hh5c8ltlwIXNO44Rp found on class 
com.example.android.firetest.models.Profiles
I/System.out: the user's id: null
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.firetest, PID: 8546
java.lang.NullPointerException: Attempt to invoke virtual method'
java.lang.String java.lang.String.trim()' on a null object reference 
at java.lang.StringToReal.parseDouble(StringToReal.java:263)
                  at java.lang.Double.parseDouble(Double.java:301)
                  at com.example.android.firetest.Account_balance$2.onDataChange(Account_balance.java:263)
我检索用户数据的方法:

private void loadUserdata() {
    System.out.println("entro aqui !");
    Query profileQuery = myRef.child("profiles").orderByChild("email").equalTo("jose.nieto@riagency.us").limitToFirst(1);
    profileQuery.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Profiles user = dataSnapshot.getValue(Profiles.class);
            System.out.println("the user's id: "+user.getId());
            base_salary = user.getBase_salary();
            cedula = user.getId();
            //Here is where the error happens
            Double monto_quincenal = Double.parseDouble(base_salary)/2;
            primera_quincena.setText(monto_quincenal.toString());
            segunda_quincena.setText(monto_quincenal.toString());
            Account_name.setText(user.getFirst_name() +" "+ user.getLast_name());
            refOrder = myRef.child("invoices").child(year.getSelectedItem().toString())
                    .child(month.getSelectedItem().toString())
                    .orderByChild("id").equalTo(cedula);
            System.out.println("la cedula en el metodo "+cedula);

                    populateInvoiceList();

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            System.out.println("the has been an error retrieving the user data: \n" + databaseError.getMessage());
        }
    });
}
我真的不知道为什么它说基本工资是空的,而它已经分配到下面

POJO:

public class Profiles {
private String age;
private String email;
private String name;
private String image;
private String first_name;
private String address;
private String avatar;
private String base_salary;
private String birthday_date;
private String city;
private String counrty_code;
private String dpto;
private String id;
private Boolean is_leader;
private String last_name;
private String occupation;
private String phone;
private int registered_at;
private String role;
private Boolean status;
private int updated_at;

public Profiles() {
}

public Profiles(String age, String email, String name, String first_name,
                String image, String address, String avatar, String base_salary, String counrty_code, String birthday_date,
                String city, String dpto, String id, Boolean is_leader, String occupation, String last_name,
                String phone, int registered_at, String role, Boolean status, int updated_at) {
//**
}
Firebase参考:

firetest-e5a93/profiles/-K2Hh5c8ltlwIXNO44Rp
-K2Hh5c8ltlwIXNO44Rp
address: "cra 45, calle 75b sur, int 106, edif las acasia..."
avatar: "avatar.jpg"
base_salary: "300000"
birthday_date: "1986-01-03"
city: "sabaneta"
counrty_code: "CO"
dpto: 2
email: "jose.nieto@riagency.us"
first_name: "Jose Gabriel"
has_avatar: true
id: "060514699"
interests: "PHP, Js, html, css, AngularJS, laravel, cakephp..."
is_leader: true
last_name: "Nieto Avila"
occupation: "Ing en Informatica"
phone: "3223349524"
position: "Lider Development"
registered_at: 1446643984181
role: "admin"
schedule_special: true
status: true
team_name: "Fino Code"
updated_at: 1446643984181

如您所见,在日志中,我们得到了相同的,但Profile对象似乎为空,有什么想法吗

您的POJO中有一个年龄属性,它不在您的firebase引用中;您的firebase引用中有一个团队名称,它不在您的POJO中

编辑 哦,而且,该查询将返回一个配置文件数组,而不是一个配置文件。这就是它试图将该键设置为属性的原因。尝试获取快照的第一个子级

for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
    Profiles profile = snapshot.getValue(Profiles.class);
    System.out.println(profile);
}

编辑了我的答案,忽略了实际问题。POJO更新了,我如何将该数组转换为单个配置文件?我的代码更进一步,但它停止声明对象。编辑E/AndroidRuntime:致命异常:主进程:com.example.android.firetest,PID:2071 com.google.firebase.database.DatabaseException:超出32位整数范围的数值:1.446643981e12。你的意思是用long或double来代替int吗?我不知道你的意思,在你的问题中加上这个错误。那是因为你的更新的_at太长了,不能用int来代替,所以把它改成double或long。同样的,注册护士面临同样的问题,浪费了10分钟。学习-->“快照始终是一个列表。”