Как создать уникальный идентификатор с префиксом с помощью Spring Data Couchbase SDK?

Я хотел бы знать, как создать уникальный идентификатор с префиксом, например, 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;
}

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

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

1 ответ

Так что на самом деле я нашел ответ, мне пришлось использовать 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

Другие вопросы по тегам