Spring Data Couchbase 使用 _class 字段做什么?
What does Spring Data Couchbase use the _class field for?
我猜测该类型用于 CRUD 操作。除此之外还有其他用途吗?我想知道配置它的填充方式会产生什么影响。
_class
字段被写入以允许域模型中的多态属性。请参阅此示例:
class Wrapper {
Object inner;
}
Wrapper wrapper = new Wrapper();
wrapper.inner = new Foo();
couchbaseOperations.save(wrapper);
您会看到字段 inner
将如何得到 Foo
序列化和持久化。在阅读方面,我们现在必须找出创建对象的类型,而 Wrapper
中的类型信息不足以做到这一点,因为它只说明 Object
.
这就是为什么 Spring 数据对象映射保留一个附加字段(名称可自定义但默认为 _class
)来存储该信息以便能够检查源文档,从值中派生类型为该领域编写并最终将该文档映射回该特定类型。
Spring Data Couchbase 参考文档并没有真正记录它,您可以在 docs for the MongoDB module. I've also created a ticket for Spring Data Couchbase 中找到有关其工作方式的信息,以改进相关文档。
我猜测该类型用于 CRUD 操作。除此之外还有其他用途吗?我想知道配置它的填充方式会产生什么影响。
_class
字段被写入以允许域模型中的多态属性。请参阅此示例:
class Wrapper {
Object inner;
}
Wrapper wrapper = new Wrapper();
wrapper.inner = new Foo();
couchbaseOperations.save(wrapper);
您会看到字段 inner
将如何得到 Foo
序列化和持久化。在阅读方面,我们现在必须找出创建对象的类型,而 Wrapper
中的类型信息不足以做到这一点,因为它只说明 Object
.
这就是为什么 Spring 数据对象映射保留一个附加字段(名称可自定义但默认为 _class
)来存储该信息以便能够检查源文档,从值中派生类型为该领域编写并最终将该文档映射回该特定类型。
Spring Data Couchbase 参考文档并没有真正记录它,您可以在 docs for the MongoDB module. I've also created a ticket for Spring Data Couchbase 中找到有关其工作方式的信息,以改进相关文档。