From e06f326de3a4932c0935b88fdd2601d255f65009 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Wed, 15 May 2019 14:56:11 +0200 Subject: [PATCH] DATAMONGO-1183 - Fix field name mapping in IndexOperations. We now consider the Field annotation when creating indexes via IndexOperations. Original pull request: #750. --- .../data/mongodb/core/DefaultIndexOperations.java | 3 ++- .../mongodb/core/DefaultIndexOperationsUnitTests.java | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultIndexOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultIndexOperations.java index 4feef22e2..c1012080a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultIndexOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultIndexOperations.java @@ -127,7 +127,8 @@ public class DefaultIndexOperations implements IndexOperations { indexOptions = addPartialFilterIfPresent(indexOptions, indexDefinition.getIndexOptions(), entity); indexOptions = addDefaultCollationIfRequired(indexOptions, entity); - return collection.createIndex(indexDefinition.getIndexKeys(), indexOptions); + Document mappedKeys = mapper.getMappedObject(indexDefinition.getIndexKeys(), entity); + return collection.createIndex(mappedKeys, indexOptions); }); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultIndexOperationsUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultIndexOperationsUnitTests.java index 01f696dad..fe5527293 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultIndexOperationsUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultIndexOperationsUnitTests.java @@ -69,6 +69,14 @@ public class DefaultIndexOperationsUnitTests { this.template = new MongoTemplate(factory, converter); } + @Test // DATAMONGO-1183 + public void indexOperationsMapFieldNameCorrectly() { + + indexOpsFor(Jedi.class).ensureIndex(new Index("name", Direction.DESC)); + + verify(collection).createIndex(eq(new Document("firstname", -1)), any()); + } + @Test // DATAMONGO-1854 public void ensureIndexDoesNotSetCollectionIfNoDefaultDefined() {