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

时间:2019-03-01 15:02:10

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

我想知道如何生成带有前缀的唯一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只是“用户”。

我想念什么吗?是虫子吗?我将不胜感激。

1 个答案:

答案 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生成器