我正在使用注释设置一个文档,@Id
在我的测试中我得到一个MappingException
,因为在创建新文档时没有设置 Id。spring-data + couchbase 是否无法自动为新文档分配 ID?
问问题
3911 次
5 回答
4
Couchbase 中没有自动生成 ID,因此您需要设置一个。
请记住,Couchbase 可以将异构数据存储Bucket
在同一个存储单元中,因此默认情况下,如果您有多种类型的实体,它们将最终存储在同一个存储单元中。因此,如果您有例如。User
和Product
实体,创建和保存一个User
“ @Id
foo”,然后一个Product
也被标识的“foo”最终会User
用Product
.
我的意思是,您必须提供@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 回答