Как создать уникальный идентификатор с префиксом с помощью Spring Data Couchbase SDK? - PullRequest
0 голосов
/ 01 марта 2019

Я хотел бы знать, как создать уникальный идентификатор с префиксом, например, user :: 524525 с Couchbase SDK.

Когда я начал с Couchbase с использованием руководства Couchbase JavaSDK , я заметил, что во всех примерах идентификатор выглядит как TYPE :: ID, например, user :: king_arthur.Это также рекомендуется, чтобы избежать конфликтных идентификаторов для разных документов.Когда я читал документацию из 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;
}

, но когда я проверяю это и проверяю в БД, идентификатор просто "user ".

Я что-то упустил?Это ошибка?Буду признателен за любые предложения.

1 Ответ

0 голосов
/ 01 марта 2019

Так что на самом деле я нашел ответ, мне пришлось использовать GenerationStrategy.UNIQUE примерно так:

@IdPrefix
private String prefix = "user";

@Id @GeneratedValue( delimiter = "::", strategy = GenerationStrategy.UNIQUE)
private String id;

, который генерирует уникальный идентификатор, например, user :: 8a9gfa4d55f7.

JavaDoc, тем не менее, сбивает с толку, поскольку для GenerationStrategy.USE_ATTRIBUTES он явно говорит, что будет использовать префикс:

Создает ключ из атрибутов сущности, используя предоставленный идентификатор, префикс, суффикс

но не для GenerationStrategy.UNIQUE:

Использует генератор uuid

...