All my firebase field get automatically an underscore on front

My PoIs class:

public class PoIs {
   private Integer location_id;
   private String location_name;
   private String location_address;
   
public PoIs() {}

public PoIs(Integer location_id, String location_name, String location_address) {
    this();
    this.location_id = location_id;
    this.category_id = category_id;
    this.location_name = location_name;
    this.location_address = location_address;
}

public Integer get_location_id() {
    return location_id;
}

public void set_location_id(Integer location_id) {
    this.location_id = location_id;
}

public String get_location_name() {
    return location_name;
}

public void set_location_name(String location_name) {
    this.location_name = location_name;
}

public String get_location_address() {
    return location_address;
}

public void set_location_address(String location_address) {
    this.location_address = location_address;
}

I populate PoIs with informatision from a sqlite database:

final PoIs p = new PoIs(Integer.parseInt(row.get(0).toString()), row.get(1).toString(), row.get(2).toString());

and at a moment intend to save them on a firabase database:

FIREBASE_REFERENCE.child("PoI_"+ p.get_location_id()).setValue(p)
            .addOnCompleteListener(t -> {
                final boolean isSuccessful = t.isSuccessful();
                final String msg = !isSuccessful
                        ? getResources().getString(R.string.fb_error)
                        : getResources().getString(R.string.fb_success);

         });

All work perfect except that my firebase fields start with an underscore. Instead location_id, location_name, location_address I have _location_id, _location_name, _location_address. I can’t understand why this happening. Any ideea how to resolve this issue?

>Solution :

Firebase uses JavaBean naming conventions when mapping from properties in your code to properties in the database. In that convention a method like get_location_name is the getter for a property called _location_name.

If you want the property in the database to be location_name, that’d be a getter getLocation_name. Alternatively, you can use a @PropertyName("location_name")) annotation on all accessors (so the getter/setter function and/or the public field) to indicate the explicit property name you want in the database.

Leave a Reply