我想知道如何生成带有前缀的唯一ID,例如用户:: 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只是“用户”。
我想念什么吗?是虫子吗?我将不胜感激。
答案 0 :(得分:2)
所以实际上我找到了答案,我不得不像这样使用 GenerationStrategy.UNIQUE :
@IdPrefix
private String prefix = "user";
@Id @GeneratedValue( delimiter = "::", strategy = GenerationStrategy.UNIQUE)
private String id;
会生成一个唯一的ID,例如user :: 8a9gfa4d55f7。
但是JavaDoc令人困惑,因为对于GenerationStrategy.USE_ATTRIBUTES,它明确表示它将使用前缀:
使用提供的ID从实体属性构造键, 前缀后缀
但不用于GenerationStrategy.UNIQUE:
使用uuid生成器