2016-05-01 60 views

回答

3

Couchbase中没有ID的自动生成,所以您需要设置一个。

请记住,Couchbase可以将异构数据存储在同一个Bucket中,所以默认情况下,如果您有多种类型的实体,它们将最终存储在同一个存储单元中。因此,如果你有例如。 UserProduct个实体,创建并保存User其中@Id是“foo”,那么0123'也会被id-ed“foo”最终将用Product覆盖User

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

0

此外,还有一个可用于Couchbase Java SDK的UUID Generator,可以帮助您。

有关于UUID here的讨论。

+0

是的,使用Couchbase的原子计数器文档可以用于生成ID序列。除非在每种类型的文档中使用相同的计数器,否则您仍然需要例如。使用前缀来确保id的唯一性。 –

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(); 
    } 

} 
1

作为提交069ceea弹簧数据couchbase似乎包括用于通过属性或唯一的UUID使用生成的键autogenerating密钥支持。有关如何使用它的文档,请参阅HERE

+0

我无法得到这个工作。在这里发布的问题:https://stackoverflow.com/questions/47998493/how-are-ids-autogenerated-in-spring-data-couchbase请帮助。 – User1230321