diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcCustomConversions.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcCustomConversions.java index f6d8a768f..50167ad4f 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcCustomConversions.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcCustomConversions.java @@ -39,18 +39,8 @@ import org.springframework.data.jdbc.core.mapping.JdbcSimpleTypes; */ public class JdbcCustomConversions extends CustomConversions { - private static final Collection STORE_CONVERTERS; - - static { - - List converters = new ArrayList<>(Jsr310TimestampBasedConverters.getConvertersToRegister()); - - converters - .addAll(AggregateReferenceConverters.getConvertersToRegister(DefaultConversionService.getSharedInstance())); - - STORE_CONVERTERS = Collections.unmodifiableCollection(converters); - - } + private static final Collection STORE_CONVERTERS = Collections + .unmodifiableCollection(Jsr310TimestampBasedConverters.getConvertersToRegister()); /** * Creates an empty {@link JdbcCustomConversions} object. @@ -66,7 +56,6 @@ public class JdbcCustomConversions extends CustomConversions { * @param converters must not be {@literal null}. */ public JdbcCustomConversions(List converters) { - super(constructConverterConfiguration(converters)); } @@ -98,29 +87,13 @@ public class JdbcCustomConversions extends CustomConversions { private static ConverterConfiguration constructConverterConfiguration(List converters) { - StoreConversions storeConversions = storeConversions(converters); - return new ConverterConfiguration( // - storeConversions, // + StoreConversions.of(JdbcSimpleTypes.HOLDER, STORE_CONVERTERS), // converters, // JdbcCustomConversions::excludeConversionsBetweenDateAndJsr310Types // ); } - private static StoreConversions storeConversions(List userConverters) { - - List converters = new ArrayList<>(Jsr310TimestampBasedConverters.getConvertersToRegister()); - - DefaultConversionService defaultConversionService = new DefaultConversionService(); - for (Object userConverter : userConverters) { - if (userConverter instanceof Converter converter) - defaultConversionService.addConverter(converter); - } - - converters.addAll(AggregateReferenceConverters.getConvertersToRegister(defaultConversionService)); - - return StoreConversions.of(JdbcSimpleTypes.HOLDER, Collections.unmodifiableCollection(converters)); - } /** * Obtain a read only copy of default store converters. diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/MappingJdbcConverter.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/MappingJdbcConverter.java index a5a87ce8c..ebb4d5871 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/MappingJdbcConverter.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/MappingJdbcConverter.java @@ -29,6 +29,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.context.ApplicationContextAware; import org.springframework.core.convert.ConverterNotFoundException; import org.springframework.core.convert.converter.Converter; +import org.springframework.core.convert.converter.ConverterRegistry; import org.springframework.data.convert.CustomConversions; import org.springframework.data.jdbc.core.mapping.AggregateReference; import org.springframework.data.jdbc.core.mapping.JdbcValue; @@ -91,6 +92,8 @@ public class MappingJdbcConverter extends MappingRelationalConverter implements this.typeFactory = JdbcTypeFactory.unsupported(); this.relationResolver = relationResolver; + + registerAggregateReferenceConverters(); } /** @@ -110,6 +113,14 @@ public class MappingJdbcConverter extends MappingRelationalConverter implements this.typeFactory = typeFactory; this.relationResolver = relationResolver; + + registerAggregateReferenceConverters(); + } + + private void registerAggregateReferenceConverters() { + + ConverterRegistry registry = (ConverterRegistry) getConversionService(); + AggregateReferenceConverters.getConvertersToRegister(getConversionService()).forEach(registry::addConverter); } @Nullable @@ -327,7 +338,8 @@ public class MappingJdbcConverter extends MappingRelationalConverter implements this.accessor = accessor; this.context = context; this.identifier = path.isEntity() - ? potentiallyAppendIdentifier(identifier, path.getRequiredLeafEntity(), property -> delegate.getValue(path.append(property))) + ? potentiallyAppendIdentifier(identifier, path.getRequiredLeafEntity(), + property -> delegate.getValue(path.append(property))) : identifier; } diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/MappingRelationalConverter.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/MappingRelationalConverter.java index c10648d5c..3469c8b9f 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/MappingRelationalConverter.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/MappingRelationalConverter.java @@ -134,7 +134,6 @@ public class MappingRelationalConverter extends AbstractRelationalConverter this.spELContext = new SpELContext(DocumentPropertyAccessor.INSTANCE); this.introspector = createIntrospector(projectionFactory, getConversions(), getMappingContext()); - } private static EntityProjectionIntrospector createIntrospector(ProjectionFactory projectionFactory,