首页 > 解决方案 > Spring Data MongoDB 支持嵌套对象的继承

问题描述

所以我的问题与spring在字段中如何处理继承有关。

我有四节课

@Document(collection = "A")
public class A {
    @Id
    id;

    @Field
    B data;
}

public class B {
    Type type
}

public class C extends B {
    String cField;

    public C() {
         super(Type.C);    
    }
}

public class D extends B {
    Integer dField;

    public D() {
         super(Type.D);    
    }
}

我可以使用这个模式将数据存储到 mongodb 中,它看起来像这样

{ 
    "_id" : ObjectId("5f291f861020d19a3db05123"),
    "data" : {
        "cField" : "abcd", 
        "type" : "C", 
        "_class" : "com.example.C"
    }, 
    "_class" : "com.example.A"
}
{ 
    "_id" : ObjectId("5f291f861020d19a3db05124"), 
    "data" : {
        "dField" : NumberInt(30), 
        "type" : "D", 
        "_class" : "com.example.D"
    }, 
    "_class" : "com.example.A"
}

现在,当我尝试在存储库上执行 findAll 时,它不会强制转换为子类,而只是返回 B 的实例。我需要进行哪些更改才能从 db 获取正确的子对象?

标签: javaspringmongodbspring-data-mongodb

解决方案


推荐阅读