diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java index a72353588..f7619cfdb 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java @@ -841,7 +841,9 @@ abstract class GeoConverters { * @since 1.7 */ static GeoJsonPolygon toGeoJsonPolygon(List dbList) { - return new GeoJsonPolygon(toListOfPoint((List) dbList.get(0))); + + GeoJsonPolygon polygon = new GeoJsonPolygon(toListOfPoint((List) dbList.get(0))); + return dbList.size() > 1 ? polygon.withInnerRing(toListOfPoint((List) dbList.get(1))) : polygon; } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonPolygon.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonPolygon.java index 274070741..568a0da42 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonPolygon.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonPolygon.java @@ -24,6 +24,7 @@ import java.util.List; import org.springframework.data.geo.Point; import org.springframework.data.geo.Polygon; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; /** * {@link GeoJson} representation of {@link Polygon}. Unlike {@link Polygon} the {@link GeoJsonPolygon} requires a @@ -142,4 +143,28 @@ public class GeoJsonPolygon extends Polygon implements GeoJson