spring-data-mongodb 相当于 Jackson 中的@JsonUnwrapped

问题描述 投票:0回答:2

我想使用组合模式来重用类的公共部分,就像我在 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注释核心spring数据注释中没有找到合适的注释。有吗?我知道这必然使 A 子结构的多态性变得不可能。

mongodb spring-data-mongodb
2个回答
3
投票

Spring Data MongoDB 3.2 中已通过

@Unwrapped
注释添加了对此的支持。这位于Unwrapped Types Mapping下的参考文档中。

用途:

class User {
    @Id
    String userId;

    @Unwrapped(onEmpty = Unwrapped.OnEmpty.USE_NULL) 
    UserName name;
}
class UserName {
    String firstname;
    String lastname;
}
{
  "_id" : "1da2ba06-3ba7",
  "firstname" : "Emma",
  "lastname" : "Frost"
}


1
投票

Spring Data MongoDB 不评估 Jackson 注释。实现此功能的最佳机会是提供根据您的需求量身定制的CustomConverter

但是,有一个开放的票证(DATAMONGO-1902)支持将嵌套结构展平到您可能投票支持的父文档中/从父文档中读取嵌套结构。

© www.soinside.com 2019 - 2024. All rights reserved.