我想知道如何生成带有前缀的唯一 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/