Couchbase文档ID生成

时间:2018-12-04 06:50:50

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

我有一个集成了ouchbase 6.0的Springboot应用程序。 我已经读过,如果一个键用@Id注释,那么它将被保存为文档ID,并且不会成为json的一部分。

然后我在键上一起使用了@Id和@Field,但该字段仍未出现在json文档中。

有人可以帮我解决以下问题吗?

1:如何使用与文档ID相同的密钥,并将其保留为json的一部分。

2:如果使用@Id声明字段,则将其创建为文档ID并执行    没有出现在文档上,但是当我执行获取请求时,相同的键出现在    响应。

我也尝试过,请点击此处https://docs.spring.io/spring-data/couchbase/docs/current/reference/html/#couchbase.autokeygeneration.usingattributes

我的实体是:

@Id @GeneratedValue(strategy = GenerationStrategy.USE_ATTRIBUTES,delimiter="::")
private String id;
@IdAttribute
private String userid;
@Field
private String fname;
@Field
private String lname;

发布方法正文:

{

"id": "888",
"userid":"user1",
"fname": "xyz",
"lname": "abc"

}

在Couchbase服务器中,该文档另存为

enter image description here

仅创建文档ID为 888 ,它应生成文档ID为 888 :: user1

我已经测试了很多次,但是结果是一样的。

1 个答案:

答案 0 :(得分:1)

看起来您正在寻找Key generation using attributes:

  

通常的做法是结合使用   文档属性。使用属性的密钥生成将所有内容连接在一起   根据顺序用IdAttribute注释的属性值   提供的类似于前缀和后缀。

例如,您可以这样做:

@Document
public class User {
  @Id @GeneratedValue(strategy = USE_ATTRIBUTES)
  private String id;
  @IdAttribute
  private String userid;
  ...
}

根据上面的示例,您将得到一个带有id = userId以及json中的字段userId的文档。

按问题编辑更新

您可能必须在实体中包括一个新文件,例如postId,并用id来更改post方法主体中postId字段的命名,例如:< / p>

实体:

@Id @GeneratedValue(strategy = GenerationStrategy.USE_ATTRIBUTES,delimiter="::")
private String id;
@IdAttribute(order = 0)
private String postId;
@IdAttribute(order = 1)
private String userid;
@Field
private String fname;
@Field
private String lname;

发布方法正文:

{
"postId": "888",
"userid":"user1",
"fname": "xyz",
"lname": "abc"
}
相关问题