如何使用 Spring Data Couchbase SDK 生成带前缀的唯一 ID?

How to generate unique id with prefix using Spring Data Couchbase SDK?

我想知道如何生成带有前缀的唯一 ID,例如user::524525 使用 Couchbase SDK。

当我开始使用 Couchbase 时 using the Couchbase JavaSDK guide, I noticed that in all the examples the id looks like TYPE::ID e.g user::king_arthur. This is also recommended to avoid conflicting ids for different documents. As I was reading the documentation from Spring Data Couchbase 我认为这样做的方法是

import org.springframework.data.couchbase.core.mapping.id.GeneratedValue;
import org.springframework.data.couchbase.core.mapping.id.GenerationStrategy;
import org.springframework.data.couchbase.core.mapping.id.IdPrefix;
import com.couchbase.client.java.repository.annotation.Id;
...

@Data
public class User {    

    @IdPrefix
    private String prefix = "user";

    @Id @GeneratedValue(delimiter = "::", strategy = GenerationStrategy.USE_ATTRIBUTES)
    private String id;
}

但是当我测试它并检查数据库时,ID 只是 "user"。

我错过了什么吗?这是一个错误吗?如果有任何建议,我将不胜感激。

所以实际上我找到了答案,我不得不像这样使用 GenerationStrategy.UNIQUE

@IdPrefix
private String prefix = "user";

@Id @GeneratedValue( delimiter = "::", strategy = GenerationStrategy.UNIQUE)
private String id;

它生成一个唯一的 ID,如 user::8a9gfa4d55f7。

JavaDoc 令人困惑,因为对于 GenerationStrategy.USE_ATTRIBUTES 它明确表示它将使用前缀:

Constructs key from the entity attributes using the supplied id, prefix, suffix

但不适用于 GenerationStrategy.UNIQUE:

Uses an uuid generator