我想使用合成模式来重用类的公共部分,就像我在Jackson中使用@JsonUnwrapped一样,而不在mongodb文档中添加额外级别的结构,例如:
class A {
int x; int y;
}
class B {
@JsonUnwrapped
A a;
}
class C {
@JsonUnwrapped
A a;
}
因此,当B或C存储在mongodb中时,它看起来像:
{ x:123, y:456 }
而不是
{ a: { _class:"A", x:123, y:456 } }
不幸的是,我在spring-data-mongodb annotations或core spring data annotations找不到合适的注释。有人存在吗?我知道这必然会使A子结构的多态性变得不可能。
答案 0 :(得分:1)
Spring Data MongoDB不评估Jackson注释。要实现这一目标,最好的机会就是提供一个适合您需求的CustomConverter。
不过,有一张公开票证(DATAMONGO-1902)支持将嵌套结构展平到您可能会投票的父文档中/从中读取嵌套结构。