2016-09-17 12 views
2

com.google.firebase.database.DatabaseException에 유형 java.lang.Long의 값을 변환하지 못했습니다 중포 기지 DatabaseException는 : 문자열

문자열

에 유형 java.lang.Long의의 값을 변환하는 데 실패

은 개체를 사용하기 위해 데이터를 검색하려고 할 때 문서를 따라갈 때 계속 발생하는 오류입니다. 내가 주석에 오류가 IMG HERE

마지막으로 코드 & 라인 :

여기 내 개체 모델 사용자에 대한 중포 기지에

public class User { 

    private String tour_director_key; 
    private String last_name; 
    private String location_latitude; 
    private String tour_id; 
    private String photo; 
    private String tour_director_name; 
    private String middle_name; 
    private String location_longitude; 
    private String passenger_id; 
    private long location_updated; 
    private String tour_director; 
    private String email; 
    private String first_name; 
    private String mobile_phone; 
    private String td_id; 

    public User() { 
     // empty default constructor, necessary for Firebase to be able to deserialize users 
    } 

    public String getTour_director_key() { 
     return tour_director_key; 
    } 
    public String getLast_name() { 
     return last_name; 
    } 
    public String getLocation_latitude() { 
     return location_latitude; 
    } 
    public String getTour_id() { 
     return tour_id; 
    } 
    public String getPhoto() { 
     return photo; 
    } 
    public String getTour_director_name() { 
     return tour_director_name; 
    } 
    public String getMiddle_name() { 
     return middle_name; 
    } 
    public String getLocation_longitude() { 
     return location_longitude; 
    } 
    public String getPassenger_id() { return passenger_id; } 
    public String getMobile_phone() { return mobile_phone; } 
    public long getLocation_updated() { 
     return location_updated; 
    } 
    public String getTour_director() { 
     return tour_director; 
    } 
    public String getEmail() { 
     return email; 
    } 
    public String getFirst_name() { 
     return first_name; 
    } 
    public String getTd_id() { return td_id; } 

} 

데이터입니다.

Query userDataQuery = Constants.USER_REF.orderByKey().equalTo(mUserId); 

    userDataQuery.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { 
      //// ERROR COMES FROM THE LINE BELOW //// 
      User currentUser = postSnapshot.getValue(User.class); 
      Log.i("THE_CURRENT_USER:::", currentUser.toString()); 
      Log.i("THE_USERS_EMAIL:::", currentUser.getEmail()); 

      ... 

전체 스택 트레이스는 :

FATAL EXCEPTION: main 
Process: app.timto.co.app, PID: 7453 
com.google.firebase.database.DatabaseException: Failed to convert value of type java.lang.Long to String 
                       at com.google.android.gms.internal.zzaln.zzcc(Unknown Source) 
                       at com.google.android.gms.internal.zzaln.zzb(Unknown Source) 
                       at com.google.android.gms.internal.zzaln.zza(Unknown Source) 
                       at com.google.android.gms.internal.zzaln.zzb(Unknown Source) 
                       at com.google.android.gms.internal.zzaln$zza.zze(Unknown Source) 
                       at com.google.android.gms.internal.zzaln$zza.zzcc(Unknown Source) 
                       at com.google.android.gms.internal.zzaln.zzd(Unknown Source) 
                       at com.google.android.gms.internal.zzaln.zzb(Unknown Source) 
                       at com.google.android.gms.internal.zzaln.zza(Unknown Source) 
                       at com.google.firebase.database.DataSnapshot.getValue(Unknown Source) 
                       at app.timto.co.app.AttendanceActivity$1$1.onDataChange(AttendanceActivity.java:112) 
                       at com.google.android.gms.internal.zzaie.zza(Unknown Source) 
                       at com.google.android.gms.internal.zzaje.zzcta(Unknown Source) 
                       at com.google.android.gms.internal.zzajh$1.run(Unknown Source) 
                       at android.os.Handler.handleCallback(Handler.java:739) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:148) 
                       at android.app.ActivityThread.main(ActivityThread.java:5417) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

답변

1

문제는 당신이 String으로 재산 "mobile_phone"를 작성하고 중포 기지에가 긴 타입이다.

변경 :

private String mobile_phone; 

하려면 다음 getter와 클래스/모델 중포 기지 데이터베이스에 등호가

private Long mobile_phone; 
3

확인합니다.

메소드가 인 경우 .getValue()은 데이터가 검색되면 서명이 동일한 지 비교합니다.

예 : 클래스에서
우리는 GET 값에 대한 getLong
enter image description here

는 중포 기지 데이터베이스에서 검색이 enter image description here