Мне нужно сериализовать все поля с нулевым значением в mongodb, используя репозитории spring-data-mon go. К сожалению, мне не удалось найти ни одной опции конфигурации, и я не хочу делать все поля, допускающие значение NULL, необязательными и писать для них собственный конвертер, поэтому вопрос в том, есть ли какой-либо другой вариант, кроме такого расширения MappingMongoConverter?
/**
* The converter that, as opposed to the default one, serializes null properties
* Unfortunately DocumentAccessor class is package private so the class must reside in spring package
*/
public class NullSerializingMappingMongoConverter extends MappingMongoConverter {
public NullSerializingMappingMongoConverter(DbRefResolver dbRefResolver,
MappingContext<? extends MongoPersistentEntity<?>,
MongoPersistentProperty> mappingContext) {
super(dbRefResolver, mappingContext);
}
@Override
protected void writeInternal(Object obj, Bson bson, MongoPersistentEntity<?> entity) {
if(obj == null)
return;
super.writeInternal(obj, bson, entity);
PersistentPropertyAccessor<?> accessor = entity.getPropertyAccessor(obj);
for (MongoPersistentProperty prop : entity) {
Object value = accessor.getProperty(prop);
if(value == null){
DocumentAccessor documentAccessor = new DocumentAccessor(bson);
documentAccessor.put(prop, null);
}
}
}
}