Firebase数据库:不支持对象继承?

时间:2016-06-22 02:49:19

标签: android inheritance firebase firebase-realtime-database

我升级到Firebase 9.0.2。保存到Realtime Database时,我无法像旧版本中那样使用对象进行映射。查看我的sample project demonstrating this

例如,拿这些对象:

public class Vehicle {

    private String vin;
    private int wheels;
    private int color;
    private double price;
    private String type;

    public Vehicle() { }

    ....
    //public accessors
    .... 
}

public class Truck extends Vehicle {

    private int bedLength;
    private boolean fourWheelDrive;
    private boolean diesel;

    public Truck() { }

    ....
    //public accessors
    .... 
}

如果我要创建并保存Truck对象:

final Truck truck = new Truck();
truck.setVin(getRef().push().getKey());
truck.setVehicleType("truck");
truck.setColor(random.color());
truck.setPrice(random.price());
truck.setBedLength(random.number(8));
truck.setDiesel(random.bool());
truck.setFourWheelDrive(random.bool());
truck.setVehicleType(VehicleType.TRUCK);

FirebaseDatabase
     .getInstance()
     .getReference()
     .child(vehicle.getVin())
     .setValue(truck);

我只看到来自Truck的值,而来自Vehicle的所有值:

"-KKpeYZO4eG3lAYyCd40" : {
    "bedLength" : 1,
    "diesel" : true,
    "fourWheelDrive" : true
}

我正在考虑制作一个JSON映射器,并在每次保存或检索时手动映射我的所有对象(就像以前的Firebase旧版本一样)。如果有更好的解决方案或计划来解决这个问题,我真的很想知道在我开始这个兔子洞之前。

与此同时,我遵循了from this answer的建议,这使得丑陋,冗余和容易出错的代码成为可能。

编辑:

来自Firebase工程师的{p> This solution Frank van Puffelen对我不起作用,因为我相信它是针对反序列化对象,我正在努力与序列化< / em>的

0 个答案:

没有答案