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