Spring Data Couchbase使用_class字段是什么?

时间:2016-11-17 15:53:53

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

我猜这个类型用于CRUD操作。它除了用于其他任何东西吗?我想知道配置如何填充会产生什么影响。

1 个答案:

答案 0 :(得分:4)

编写_class字段以允许域模型中的多态属性。请参阅此示例:

class Wrapper {
  Object inner;
}

Wrapper wrapper = new Wrapper();
wrapper.inner = new Foo();

couchbaseOperations.save(wrapper);

您会看到字段inner将如何Foo序列化并保留。在阅读方面,我们现在必须找出创建对象的类型以及Wrapper中的类型信息是不够的,因为它只表示Object

这就是为什么Spring Data对象映射会持久存储另一个字段(名称可自定义但默认为_class)来存储该信息以便能够检查源文档,从为其写入的值派生类型该字段并最终将该文档映射回该特定类型。

Spring Data Couchbase参考文档并没有真正记录它,您可以在docs for the MongoDB module中找到有关其工作方式的信息。我还为Spring Data Couchbase创建了a ticket以改进文档。