Получение spring-data-mon go для вставки нулевых значений в db - PullRequest
0 голосов
/ 07 мая 2020

Мне нужно сериализовать все поля с нулевым значением в 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);
            }

        }
    }
}
...