java - 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 获取正确的子对象?
解决方案
推荐阅读
- python - Pandas - 根据单元格和列的条件更改单元格值
- python - 当分隔符也可能在值中时的正则表达式
- expression - Snaplogic - 表达式语言语法 - 唯一的数组值
- python - 我想要一个函数来检查输入是否是 int 以及它是否在 python 中的要求范围内
- node.js - 在 NodeJS ClamScan 中产生错误 /usr/bin/clamscan
- parsing - 在编译器构造中有两个语义分析阶段是否很常见?
- web - Safari 快速网站搜索 | 如何告诉 Safari 我的全文搜索的工作方式?
- java - Sping:@Autowired 与构造函数注入
- php - SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;在实时服务器上使用 DENSE_RANK()
- android - 添加按钮和功能哟 appWidget