Позвольте мне объяснить мою проблему с SpringData mon go, у меня объявлен следующий интерфейс, я объявил настраиваемый запрос с проекцией на игнорирование индекса, этот пример предназначен только для иллюстрации, в реальной жизни я проигнорирую куча полей.
public interface MyDomainRepo extends MongoRepository<MyDomain, String> {
@Query(fields="{ index: 0 }")
MyDomain findByCode(String code);
}
В моем экземпляре MongoDB MyDomain имеет следующую информацию, MyDomain(code="mycode", info=null, index=19)
, поэтому, когда я использую findByCode
из MyDomainRepo, я получил следующую информацию MyDomain(code="mycode", info=null, index=null)
, пока так хорошо, потому что это ожидаемое поведение, но проблема возникает, когда ..., я решил сохранить возврат findByCode
.
Например, в следующем примере я получил возврат findByCode
и установите для свойства info
значение myinfo
, и я получил объект ниже.
MyDomain(code="mycode", info="myinfo", index=null)
Итак, я использовал save
из MyDomainRepo, индекс игнорировался, как ожидалось проекцией, но когда я сохранить его обратно, с обновлением или без него, SpringData Mon go, переопределить свойство index
на null, и, следовательно, моя запись в экземпляре MongoDB также переопределена, следующий экзамен Пожалуйста, это мой MongoDB JSON.
{
"_id": "5f061f9011b7cb497d4d2708",
"info": "myinfo",
"_class": "io.springmongo.models.MyDomain"
}
Есть способ указать SpringData Mon go, чтобы просто игнорировали пустые поля при сохранении?