【发布时间】:2016-05-01 06:12:26
【问题描述】:
我正在使用@Id 注释设置一个文档,在我的测试中我得到一个MappingException,因为在创建新文档时没有设置 ID。 spring-data + couchbase 是否无法自动为新文档分配ID?
【问题讨论】:
我正在使用@Id 注释设置一个文档,在我的测试中我得到一个MappingException,因为在创建新文档时没有设置 ID。 spring-data + couchbase 是否无法自动为新文档分配ID?
【问题讨论】:
Couchbase 中没有自动生成 ID,因此您需要设置一个。
请记住,Couchbase 可以将异构数据存储在同一个 Bucket 中,因此默认情况下,如果您有多种类型的实体,它们最终会存储在同一个存储单元中。因此,如果您有例如。 User 和 Product 实体,创建并保存 User 其中 @Id 是“foo”,然后一个 Product 也是 id-ed “foo” 将最终用 Product 覆盖 User。
我的意思是,您必须提供@Id 并且确保没有 ID 冲突,即使跨实体类也是如此。
【讨论】:
【讨论】:
这是正确的答案。
@Document
public class User {
@Id @GeneratedValue(strategy = UNIQUE)
private String id;
...
}
根据 this link
【讨论】:
此外,Couchbase Java SDK 还提供了一个 UUID 生成器,可以为您提供帮助。
关于UUID here的讨论。
【讨论】:
您可以使用 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();
}
}
【讨论】: