#spring-data #couchbase #spring-data-couchbase
#spring-данные #база данных couchbase #база данных spring-data-couchbase
Вопрос:
Итак, я пытался найти способ удалить / переименовать (и изменить значение полей ) поле _class из документа, созданного spring data couchbase, поскольку документ будет сохранен одним сервисом и, по всей вероятности, будет использован кем-то совершенно другим.
Я поиграл с API для spring couchbase и путем проб и ошибок обнаружил, что могу переименовать поле _class с пользовательским значением, используя следующий способ ->
1) Переопределите метод TypeKey в классе, наследующем конфигурацию AbstractCouchbaseConfiguration . Например, допустим, мы переопределили TypeKey, чтобы выполнить следующее ->
@Override
public String typeKey() {
return "type";
}
2) В POJO, который хранит данные в couchbase, добавьте поле с тем же именем, что вы указали, в возвращаемое значение метода TypeKey и при необходимости присвоите ему пользовательское значение —
private final String type = "studentDoc";
Я хотел проверить, является ли это допустимым способом для этого или / и какой-то лучший способ доступен для выполнения чего-то подобного сейчас
Ответ №1:
На данный момент это единственный способ сделать это с spring data, мы хотели бы добавить несколько дополнительных способов сделать это, но мы ограничены контрактами Spring Data interface. Вот почему большинство дополнительных конфигураций выполняются с помощью AbstractCouchbaseConfiguration.
Ответ №2:
Библиотеке данных Spring требуется поле с полным именем класса в качестве значения, чтобы понять, в какой объект класса десериализовать данные из couchbase. По умолчанию это поле будет именоваться _class
, но может быть изменено путем переопределения typeKey()
метода в вашей конфигурации Couchbase (расширения AbstractCouchbaseConfiguration
), как указано вами.
@Override
public String typeKey() {
return "customType";
}
Но, насколько я знаю, вам не следует изменять значение поля, поскольку библиотека не сможет понять, в какой объект десериализовать данные.
Комментарии:
1. Я понимаю точку зрения о рекомендации не изменять значение _class . Но в моем сценарии это не имеет большого смысла, потому что у потребителя этих документов, вероятно, не будет доступа к классу, который я использую для хранения документов. Вот почему я хочу удалить / переименовать поле во что-то вроде «тип» (это стандартное поле, которое мы используем для идентификации различных типов документов)