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

问题描述 投票:1回答:1

我想知道如何使用前缀生成唯一ID user :: 524525 with Couchbase SDK。

当我开始使用Couchbase using the Couchbase JavaSDK guide时,我注意到在所有示例中,id看起来像TYPE :: ID,例如user :: king_arthur。建议这样做以避免不同文档的冲突ID。当我正在阅读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只是“用户”。

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

spring spring-data couchbase spring-data-couchbase couchbase-java-api
1个回答
2
投票

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

@IdPrefix
private String prefix = "user";

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

它会生成一个像user :: 8a9gfa4d55f7这样的唯一ID。

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

使用提供的id,prefix,suffix从实体属性构造密钥

但不适用于GenerationStrategy.UNIQUE:

使用uuid发生器

© www.soinside.com 2019 - 2024. All rights reserved.