_class поле и пружина данных couchbase - PullRequest
2 голосов
/ 11 марта 2019

Итак, я пытался найти способ удалить / переименовать (и изменить значение поля) поле _class из документа, сгенерированного весенним источником данных couchbase, так как документ будет сохраняться одним сервисом и, по всей вероятности, будет потребляется кем-то совершенно другим.

Я поигрался с API для Spring Couchbase и через несколько проб и ошибок обнаружил, что могу переименовать поле _class с пользовательским значением следующим образом ->

1) Переопределить метод typeKey в классе, наследующем AbstractCouchbaseConfiguration. Например, допустим, мы переопределили typeKey, чтобы сделать следующее ->

@Override public String typeKey() { return "type"; }

2) В POJO, который хранит данные в базе данных couchbase, добавьте поле с тем же именем поля, которое вы дали, в возвращаемое значение метода typeKey и присвойте ему требуемое значение -

private final String type = "studentDoc";

Я хотел проверить, является ли это верным способом сделать это или / и есть ли лучший способ сделать что-то подобное сейчас

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Это единственный способ сделать это с данными Spring в данный момент, мы хотели бы добавить несколько дополнительных способов сделать это, но мы ограничены контрактами интерфейса Spring Data. Вот почему большинство дополнительных настроек выполняется через AbstractCouchbaseConfiguration.

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

Библиотека данных Spring нуждается в поле с полностью определенным именем класса в качестве значения, чтобы понять, в какой объект класса следует десериализовать данные из couchbase. По умолчанию это поле будет называться _class, но его можно изменить, переопределив метод typeKey() в конфигурации Couchbase (расширение AbstractCouchbaseConfiguration), как вы упомянули.

@Override
public String typeKey() {
    return "customType";
}

Но, насколько мне известно, вам не следует изменять значение поля, поскольку библиотека не сможет понять, в какой объект десериализовать данные.

...