From ea00369f07dd6774975a146407a97598fea83f88 Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Wed, 5 Oct 2022 11:50:49 +0200 Subject: [PATCH] Add support for factory methods. R2DBC now supports the use of factory methods for entity creation. Spring Data JDBC already does so via f326897950 Simply annotate a static factory method on your entity class with `@PersistenceCreator`. Closes #1346 See https://github.com/spring-projects/spring-data-commons/issues/2476 See https://github.com/spring-projects/spring-data-relational/commit/f32689795041d807191b577b8f8f7b549ec7425a --- .../data/jdbc/core/convert/BasicJdbcConverter.java | 2 -- .../data/r2dbc/convert/MappingR2dbcConverter.java | 8 ++------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java index 7a709067..3a1c8f0a 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java @@ -37,7 +37,6 @@ import org.springframework.data.mapping.InstanceCreatorMetadata; import org.springframework.data.mapping.Parameter; import org.springframework.data.mapping.PersistentPropertyAccessor; import org.springframework.data.mapping.PersistentPropertyPath; -import org.springframework.data.mapping.PreferredConstructor; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.model.DefaultSpELExpressionEvaluator; import org.springframework.data.mapping.model.ParameterValueProvider; @@ -52,7 +51,6 @@ import org.springframework.data.relational.core.mapping.RelationalPersistentEnti import org.springframework.data.relational.core.mapping.RelationalPersistentProperty; import org.springframework.data.relational.core.sql.IdentifierProcessing; import org.springframework.data.util.TypeInformation; -import org.springframework.data.util.TypeInformation; import org.springframework.lang.Nullable; import org.springframework.util.Assert; diff --git a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/convert/MappingR2dbcConverter.java b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/convert/MappingR2dbcConverter.java index 5a6472de..7d6804fe 100644 --- a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/convert/MappingR2dbcConverter.java +++ b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/convert/MappingR2dbcConverter.java @@ -32,10 +32,10 @@ import org.springframework.core.convert.ConversionService; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.convert.CustomConversions; import org.springframework.data.mapping.IdentifierAccessor; +import org.springframework.data.mapping.InstanceCreatorMetadata; import org.springframework.data.mapping.MappingException; import org.springframework.data.mapping.PersistentProperty; import org.springframework.data.mapping.PersistentPropertyAccessor; -import org.springframework.data.mapping.PreferredConstructor; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.model.ConvertingPropertyAccessor; import org.springframework.data.mapping.model.DefaultSpELExpressionEvaluator; @@ -311,7 +311,7 @@ public class MappingR2dbcConverter extends BasicRelationalConverter implements R private S createInstance(Row row, @Nullable RowMetadata rowMetadata, String prefix, RelationalPersistentEntity entity) { - PreferredConstructor persistenceConstructor = entity.getPersistenceConstructor(); + InstanceCreatorMetadata persistenceConstructor = entity.getInstanceCreatorMetadata(); ParameterValueProvider provider; if (persistenceConstructor != null && persistenceConstructor.hasParameters()) { @@ -716,10 +716,6 @@ public class MappingR2dbcConverter extends BasicRelationalConverter implements R this.prefix = prefix; } - /* - * (non-Javadoc) - * @see org.springframework.data.mapping.model.ParameterValueProvider#getParameterValue(org.springframework.data.mapping.PreferredConstructor.Parameter) - */ @Override @Nullable public T getParameterValue(