在spring数据mongodb中获取继承的属性

qf9go6mv  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(267)

我用的是SpringBoot和mongodb。当我们查询继承的类时,我面临一个问题。为了方便起见,我用下面的结构来解释。我有三个实体 BaseEntity , Bird 以及 Human . BaseEntity 可以是独立的。但是 Bird 以及 Human 延伸 BaseEntity . 我用 @JsonTypeInfo 为了遗产。 type 是用来找出鸟或人的。

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type", visible = true)
@JsonSubTypes({
        @JsonSubTypes.Type(value = Bird.class, name = "BIRD"),
        @JsonSubTypes.Type(value = Human.class, name = "HUMAN")
})
@Document(collection="base-entity")
class BaseEntity{
    @Id Integer id;
    String name;
    String type;
}

@Document(collection="base-entity")
@JsonTypeName("BIRD")
class Bird extends BaseEntity{
    Integer age;
    String flySpeed;
}

@Document(collection="base-entity")
@JsonTypeName("HUMAN")
class Human extends BaseEntity{
    Integer age;
    Sting grade;
}

基本实体集合中的示例文档。

{ id:1, name:"Pine", type:"TREE" } // BaseEntity only
{ id:2, name:"Hen", type:"BIRD", age:7, flySpeed:"1" } // Bird
{ id:3, name:"John", type:"HUMAN", age:12, grade: "1st grade" } // Human

我需要得到7岁和12岁的结果。
我的存储库是

public interface BaseEntityRepository extends MongoRepository<BaseEntity, Integer> {
    List<BaseEntity> findByAgeIn(List<Integer> ages);
}

它的工作,但它的给予

{ id:2, name:"Hen", type:"BIRD" }
{ id:3, name:"John", type:"HUMAN" }

但我的预期产出是

{ id:2, name:"Hen", type:"BIRD", age:7, flySpeed:"1" }
{ id:3, name:"John", type:"HUMAN", age:12, grade: "1st grade" }

我试过了,但没能成功。如何获取继承对象的所有属性。提前谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题