我用的是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" }
我试过了,但没能成功。如何获取继承对象的所有属性。提前谢谢
暂无答案!
目前还没有任何答案,快来回答吧!