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