覆盖Spring Data Couchbase中“_class”属性的值

时间:2018-04-05 17:53:54

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

我正在尝试使用Spring Data Couchbase和spring boot v2.0&发现帖子How to use spring data with couchbase without _class attribute但是,我没有看到任何回复。

默认情况下,Spring数据使用_class存储完全限定的类名作为其值。我能够将密钥从_class更改为_mytype,但我无法将完全限定类名的值更改为任何自定义字符串。

Spring Data Couchbase库是否已停止支持此功能?任何示例代码段都会有所帮助。

谢谢!

3 个答案:

答案 0 :(得分:1)

这是我今天在提交请求问题后从Couchbase收到的回复:

卡洛斯,你好

感谢您的耐心等待,我一直在调查您的问题。

我已经在这里与我们的开发团队讨论了这一点,他们负责管理Couchbase的Spring数据以确定是否可行。目前,当前无法将_class字段的值更改为非限定的类名。但是,可以这么说,这是一项预期功能,将在将来与我们即将发布的SDK 3一起添加,暂定于2020年初发布。DATACOUCH-399跟踪此功能:允许在@TypeAlias注释上使用Spring Data的公共Jira,您可以用来跟踪此开发。

由于Couchbase技术支持没有关于此问题的进一步措施,因此我们会将此支持案例标记为已解决。如果您遇到与此支持案例无关的任何问题,请提出一张新票,Couchbase技术支持将尽快为您提供帮助。

谢谢, 托马斯。

答案 1 :(得分:0)

不幸的是,尚不支持将值从完全限定类名更改为任何自定义字符串。但是,这个功能将包含在下一个版本中。

答案 2 :(得分:0)

如果您查看本节末尾的文档here

  

如果您使用SyncGateway和CouchbaseMobile,则可能会遇到以_为前缀的字段的问题。由于Spring Data Couchbase默认将类型信息存储为_class属性,因此这可能会有问题。覆盖typeKey()(例如,返回MappingCouchbaseConverter.TYPEKEY_SYNCGATEWAY_COMPATIBLE)以更改所述属性的名称。

也许你可以试试

@Override
public String typeKey() {
    return MappingCouchbaseConverter.TYPEKEY_SYNCGATEWAY_COMPATIBLE;
}