【问题标题】:spring-data-mongodb equivalent of @JsonUnwrapped in Jacksonspring-data-mongodb 相当于杰克逊中的@JsonUnwrapped
【发布时间】:2017-03-02 00:06:49
【问题描述】:

我想使用组合模式来重用类的公共部分,就像我在 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 annotationscore spring data annotations 中找不到合适的注释。一个存在吗?我知道这必然使 A 子结构的多态性成为不可能。

【问题讨论】:

    标签: mongodb spring-data-mongodb


    【解决方案1】:

    同时,spring data mongo annotations@here中添加了所需的注解。

    用法:

    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"
    }
    
    

    【讨论】:

      【解决方案2】:

      Spring Data MongoDB 不评估 Jackson 注释。完成这项工作的最佳机会是提供适合您需求的CustomConverter

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

      【讨论】:

      • 谢谢,希望其他人也可以使用这个明确的答案。
      猜你喜欢
      • 1970-01-01
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多