2016-05-01 92 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