5

我正在使用注释设置一个文档,@Id在我的测试中我得到一个MappingException,因为在创建新文档时没有设置 Id。spring-data + couchbase 是否无法自动为新文档分配 ID?

4

5 回答 5

4

Couchbase 中没有自动生成 ID,因此您需要设置一个。

请记住,Couchbase 可以将异构数据存储Bucket在同一个存储单元中,因此默认情况下,如果您有多种类型的实体,它们将最终存储在同一个存储单元中。因此,如果您有例如。UserProduct实体,创建和保存一个User@Idfoo”,然后一个Product也被标识的“foo”最终会UserProduct.

我的意思是,您必须提供@Id 确保没有 ID 冲突,即使跨实体类也是如此。

于 2016-05-01T10:40:22.407 回答
1

这是正确的答案。

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

按照 这个链接

于 2018-10-14T11:53:39.887 回答
1

从提交069ceea 开始, spring-data-couchbase 似乎支持使用通过属性或唯一 UUID 生成的密钥来自动生成密钥。有关如何使用它的文档,请参见此处。

于 2017-04-13T07:49:30.370 回答
0

此外,Couchbase Java SDK 还提供了一个 UUID 生成器,可以为您提供帮助。

这里有关于 UUID 的讨论。

于 2016-05-02T13:25:57.903 回答
0

您可以使用 Java 将 UUID 生成为唯一的。这将由 Java 生成 UUID。可以在 Couchbase PK 中用作唯一的。

@Document
public class BasicEntity {

@Id
@Field
private String _id;

/**
 * @return the _id
 */
public String get_id() {
    return _id;
}

/**
 */
public void set_id() {
    this._id = UUID.randomUUID().toString();
   }

}
于 2017-01-05T04:45:28.867 回答