diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java index 59049c01c..38f09ce02 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java @@ -1012,7 +1012,8 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App TypeInformation valueTypeHint = typeHint != null && typeHint.getMapValueType() != null ? typeHint.getMapValueType() : typeHint; - converted.put(convertToMongoType(entry.getKey()), convertToMongoType(entry.getValue(), valueTypeHint)); + converted.put(getPotentiallyConvertedSimpleWrite(entry.getKey()).toString(), + convertToMongoType(entry.getValue(), valueTypeHint)); } return new BasicDBObject(converted); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/UpdateMapperUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/UpdateMapperUnitTests.java index 85eedd5a8..764e56d70 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/UpdateMapperUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/UpdateMapperUnitTests.java @@ -914,6 +914,24 @@ public class UpdateMapperUnitTests { assertThat(result, isBsonObject().containing("$set.enumAsMapKey.V", 100)); } + /** + * @see DATAMONGO-1486 + */ + @Test + public void mappingShouldConvertMapKeysToString() { + + Update update = new Update().set("map", Collections.singletonMap(25, "#StarTrek50")); + DBObject mappedUpdate = mapper.getMappedObject(update.getUpdateObject(), + context.getPersistentEntity(EntityWithObjectMap.class)); + + DBObject $set = getAsDBObject(mappedUpdate, "$set"); + DBObject mapToSet = getAsDBObject($set, "map"); + + for (Object key : mapToSet.keySet()) { + assertThat(key, instanceOf(String.class)); + } + } + static class DomainTypeWrappingConcreteyTypeHavingListOfInterfaceTypeAttributes { ListModelWrapper concreteTypeWithListAttributeOfInterfaceType; }