diff --git a/src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java b/src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java index 57169dc2d..8d1ab7065 100644 --- a/src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java +++ b/src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java @@ -115,22 +115,23 @@ public interface PreferredConstructorDiscoverer 1 || candidates.isEmpty() ? null : buildPreferredConstructor(candidates.iterator().next(), type, entity); + return candidates.size() > 1 || candidates.isEmpty() ? null + : buildPreferredConstructor(candidates.iterator().next(), type, entity); } }, @@ -152,7 +153,8 @@ public interface PreferredConstructorDiscoverer !it.isSynthetic()) // Synthetic constructors should not be considered - .filter(it -> it.isAnnotationPresent(PersistenceConstructor.class)) // Explicitly defined constructor trumps all + .filter(it -> it.isAnnotationPresent(PersistenceConstructor.class)) // Explicitly defined constructor trumps + // all .map(it -> buildPreferredConstructor(it, type, entity)) // .findFirst() // .orElseGet(() -> { @@ -198,12 +200,11 @@ public interface PreferredConstructorDiscoverer> PreferredConstructor buildPreferredConstructor( Constructor constructor, TypeInformation typeInformation, @Nullable PersistentEntity entity) { - List> parameterTypes = typeInformation.getParameterTypes(constructor); - - if (parameterTypes.isEmpty()) { + if (constructor.getParameterCount() == 0) { return new PreferredConstructor<>((Constructor) constructor); } + List> parameterTypes = typeInformation.getParameterTypes(constructor); String[] parameterNames = PARAMETER_NAME_DISCOVERER.getParameterNames(constructor); Parameter[] parameters = new Parameter[parameterTypes.size()];