diff --git a/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java b/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java index f1a7e70a1..edc792d6a 100644 --- a/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java +++ b/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java @@ -20,7 +20,6 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Collections; import java.util.HashSet; -import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -229,7 +228,7 @@ public abstract class AbstractPersistentProperty

@Override public boolean isMap() { - return Map.class.isAssignableFrom(getType()); + return information.isMap(); } @Override diff --git a/src/test/java/org/springframework/data/mapping/model/AbstractPersistentPropertyUnitTests.java b/src/test/java/org/springframework/data/mapping/model/AbstractPersistentPropertyUnitTests.java index a2921a0a7..0872e6a0b 100755 --- a/src/test/java/org/springframework/data/mapping/model/AbstractPersistentPropertyUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/model/AbstractPersistentPropertyUnitTests.java @@ -238,6 +238,14 @@ public class AbstractPersistentPropertyUnitTests { .containsExactly((Class) JMoleculesAggregate.class); } + @Test // #2549 + void considersVavrMaps() { + + SamplePersistentProperty property = getProperty(VavrWrapper.class, "vavrMap"); + + assertThat(property.isMap()).isTrue(); + } + private BasicPersistentEntity getEntity(Class type) { return new BasicPersistentEntity<>(ClassTypeInformation.from(type)); } @@ -399,4 +407,8 @@ public class AbstractPersistentPropertyUnitTests { interface JMoleculesAggregate extends AggregateRoot { } + + class VavrWrapper { + io.vavr.collection.Map vavrMap; + } }