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

标签 spring spring-data couchbase spring-data-couchbase couchbase-java-api

我想知道如何生成带有前缀的唯一 ID,例如user::524525 使用 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 只是“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

关于spring - 如何使用 Spring Data Couchbase SDK 生成带前缀的唯一 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54947222/

相关文章:

java - 如何模拟 Couchbase Lite 数据库

java - spring-security-web 加载上下文时出错

java - 自动填充集

java - HTTP 状态 500 - 请求处理失败。嵌套异常是java.lang.NullPointerException

java - 我如何使用内连接找到All

couchbase - n1ql 主扫描性能

java - Bean创建异常: Injection of autowired dependencies failed

java - 为什么我的@RestController 中接收到的实体将值设置为 null 而不是默认值

spring - Spring Boot不会加载数据以使用data.sql初始化数据库

nosql - Couchbase 数据建模 - 面向文档