【问题标题】:_class field and spring data couchbase_class 字段和 spring 数据 couchbase
【发布时间】:2019-03-11 09:01:34
【问题描述】:

因此,我试图找到一种方法来删除/重命名(并更改字段值)spring data couchbase 生成的文档中的 _class 字段,因为该文档将由一个服务存储并且很可能是被完全不同的人消费。

我在玩 spring couchbase 的 api,通过一些试验和错误发现我可以使用以下方式使用自定义值重命名 _class 字段 ->

1) 在继承 AbstractCouchbaseConfiguration 的类中重写 typeKey 方法。例如,假设我们重写了 typeKey 来执行以下操作 ->

@Override public String typeKey() { return "type"; }

2)在将数据存储到couchbase的POJO中,在typeKey方法的返回值中添加一个与你给的字段名称相同的字段,并根据需要给它自定义值-

private final String type = "studentDoc";

我想检查这是否是解决此问题的有效方法或/并且现在可以使用更好的方法来执行此类操作

【问题讨论】:

    标签: spring-data couchbase spring-data-couchbase


    【解决方案1】:

    这是目前使用 Spring Data 的唯一方法,我们想添加一些额外的方法来做到这一点,但我们仅限于 Spring Data 接口契约。这就是为什么大多数额外的配置都是通过 AbstractCouchbaseConfiguration 完成的。

    【讨论】:

      【解决方案2】:

      Spring 数据库需要一个具有完全限定类名的字段作为它的值,以了解要将数据从 couchbase 反序列化到哪个类对象。默认情况下,此字段将命名为 _class,但可以通过覆盖您提到的 Couchbase 配置(扩展 AbstractCouchbaseConfiguration)中的 typeKey() 方法来修改。

      @Override
      public String typeKey() {
          return "customType";
      }
      

      但据我所知,您不应该修改字段的值,因为库无法理解将数据反序列化到哪个对象。

      【讨论】:

      • 我理解关于不更改_class 值的建议的要点。但在我的场景中,这没有多大意义,因为这些文档的使用者可能无法访问我用来存储文档的类。所以这就是为什么我想删除/重命名字段为“类型”(这是我们用来识别不同类型文档的标准字段)
      猜你喜欢
      • 1970-01-01
      • 2011-10-12
      • 2016-04-17
      • 2017-07-26
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      相关资源
      最近更新 更多