Spring Data Couchbase:自动生成ID

时间:2016-05-01 06:12:27

标签: spring-data-couchbase

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

5 个答案:

答案 0 :(得分:3)

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

请记住,Couchbase可以将异构数据存储在同一个Bucket中,因此默认情况下,如果您有多种类型的实体,它们最终会存储在同一个存储单元中。因此,如果你有例如。 UserProduct个实体,创建并保存User @Id为“foo”,然后Product也称为“foo”将最终覆盖带有User的{​​{1}}。

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

答案 1 :(得分:1)

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

答案 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;
     ...
}

this link