Сбой базы данных Firebase Realtime при отправке данных - PullRequest
0 голосов
/ 19 марта 2020

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

public class MedicineUsageData {

    String companyName;
    String productName;
    String drugSubstance;
    String expireDate;
    String barcodeNum;
    String serialNum;
    String partyNum;
    String userName;
    String dosage;
    int userAge;


    public MedicineUsageData() {}

    public MedicineUsageData(String companyName, String productName, String drugSubstance, String expireDate, String barcodeNum, String serialNum, String partyNum, String userName, String dosage, int userAge) {
        this.companyName = companyName;
        this.productName = productName;
        this.drugSubstance = drugSubstance;
        this.expireDate = expireDate;
        this.barcodeNum = barcodeNum;
        this.serialNum = serialNum;
        this.partyNum = partyNum;
        this.userName = userName;
        this.dosage = dosage;
        this.userAge = userAge;
    }

    //getters and setters
}

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

public class DatabaseManager {

    private DatabaseReference receiptDatabase;

    public DatabaseManager(){
        receiptDatabase = FirebaseDatabase.getInstance().getReference();
    }

    public DatabaseReference getReference(){ return receiptDatabase; }

    public void writeNewUser(String username, String email, String name, String surname, String passwordHash, String birthDate) {

        int age = StringOperations.getAge(birthDate);
        User user = new User(username, email, name, surname,passwordHash,birthDate,age);
        receiptDatabase.child("user").child(username).setValue(user);
    }

    public void writeNewMedicineUsage(Map<String, Object> medicineInfo, User user){

        MedicineUsageData medicineUsageData = new MedicineUsageData(Objects.requireNonNull(medicineInfo.get("companyName")).toString(), Objects.requireNonNull(medicineInfo.get("medicineName")).toString(), Objects.requireNonNull(medicineInfo.get("drugSubstance")).toString(), Objects.requireNonNull(medicineInfo.get("expireDate")).toString(), Objects.requireNonNull(medicineInfo.get("barcodeNumber")).toString(), Objects.requireNonNull(medicineInfo.get("serialNumber")).toString(), Objects.requireNonNull(medicineInfo.get("partyNumber")).toString(), user.getUserName(), Objects.requireNonNull(medicineInfo.get("dosage")).toString(), Objects.requireNonNull(user.getAge()));
        receiptDatabase.child("medicineUsageData").push().setValue(medicineUsageData);

    }
}

Метод writeNewUser в моем классе DatabaseManager работает отлично. Но метод writeNewMedicineUsage не работает. Я проверил отладку, поэтому я знаю, что мои данные не являются нулевыми. Этот метод отлично работает до двух дней go. Как я уже сказал, я только добавляю к этому новую ценность. Как я могу исправить эту проблему? Я проверил Stackoverflow, но не могу найти такую ​​вещь.

Вот мой след стека

2020-03-19 22:27:22.870 30076-30076/com.track.medicine E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.track.medicine, PID: 30076
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.track.medicine/com.track.medicine.MainScreenActivity}: com.google.firebase.database.DatabaseException: Found conflicting getters for name: getdrugSubstance
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
 Caused by: com.google.firebase.database.DatabaseException: Found conflicting getters for name: getdrugSubstance
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.<init>(com.google.firebase:firebase-database@@19.2.1:477)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.loadOrCreateBeanMapperForClass(com.google.firebase:firebase-database@@19.2.1:329)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.serialize(com.google.firebase:firebase-database@@19.2.1:166)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToPlainJavaTypes(com.google.firebase:firebase-database@@19.2.1:60)
    at com.google.firebase.database.DatabaseReference.setValueInternal(com.google.firebase:firebase-database@@19.2.1:282)
    at com.google.firebase.database.DatabaseReference.setValue(com.google.firebase:firebase-database@@19.2.1:159)
    at com.track.medicine.DatabaseManager.writeNewMedicineUsage(DatabaseManager.java:29)
    at com.track.medicine.MainScreenActivity.onCreate(MainScreenActivity.java:74)
    at android.app.Activity.performCreate(Activity.java:7183)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6944) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...