Как создать уникальный идентификатор с префиксом с помощью 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