diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/BasicJdbcPersistentProperty.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/BasicJdbcPersistentProperty.java index 8d2b0c68..81ba0007 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/BasicJdbcPersistentProperty.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/BasicJdbcPersistentProperty.java @@ -15,15 +15,17 @@ */ package org.springframework.data.jdbc.core.mapping; -import org.springframework.data.jdbc.support.JdbcUtil; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.model.Property; import org.springframework.data.mapping.model.SimpleTypeHolder; import org.springframework.data.relational.core.mapping.BasicRelationalPersistentProperty; +import org.springframework.data.relational.core.mapping.NamingStrategy; import org.springframework.data.relational.core.mapping.RelationalMappingContext; import org.springframework.data.relational.core.mapping.RelationalPersistentProperty; /** + * Extension to {@link BasicRelationalPersistentProperty}. + * * @author Mark Paluch */ public class BasicJdbcPersistentProperty extends BasicRelationalPersistentProperty { @@ -35,12 +37,29 @@ public class BasicJdbcPersistentProperty extends BasicRelationalPersistentProper * @param owner must not be {@literal null}. * @param simpleTypeHolder must not be {@literal null}. * @param context must not be {@literal null} + * @deprecated since 2.0, use + * {@link #BasicJdbcPersistentProperty(Property, PersistentEntity, SimpleTypeHolder, NamingStrategy)}. */ + @Deprecated public BasicJdbcPersistentProperty(Property property, PersistentEntity owner, SimpleTypeHolder simpleTypeHolder, RelationalMappingContext context) { super(property, owner, simpleTypeHolder, context); } + /** + * Creates a new {@link BasicJdbcPersistentProperty}. + * + * @param property must not be {@literal null}. + * @param owner must not be {@literal null}. + * @param simpleTypeHolder must not be {@literal null}. + * @param namingStrategy must not be {@literal null} + * @since 2.0 + */ + public BasicJdbcPersistentProperty(Property property, PersistentEntity owner, + SimpleTypeHolder simpleTypeHolder, NamingStrategy namingStrategy) { + super(property, owner, simpleTypeHolder, namingStrategy); + } + @Override public boolean isReference() { return AggregateReference.class.isAssignableFrom(getRawType()); diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/JdbcMappingContext.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/JdbcMappingContext.java index 98bd8a89..85861d28 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/JdbcMappingContext.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/JdbcMappingContext.java @@ -85,7 +85,7 @@ public class JdbcMappingContext extends RelationalMappingContext { @Override protected RelationalPersistentProperty createPersistentProperty(Property property, RelationalPersistentEntity owner, SimpleTypeHolder simpleTypeHolder) { - return new BasicJdbcPersistentProperty(property, owner, simpleTypeHolder, this); + return new BasicJdbcPersistentProperty(property, owner, simpleTypeHolder, this.getNamingStrategy()); } @Override diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentProperty.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentProperty.java index 39b1612f..a77286e1 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentProperty.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentProperty.java @@ -41,30 +41,46 @@ import org.springframework.util.StringUtils; public class BasicRelationalPersistentProperty extends AnnotationBasedPersistentProperty implements RelationalPersistentProperty { - private final RelationalMappingContext context; private final Lazy columnName; private final Lazy> collectionIdColumnName; private final Lazy collectionKeyColumnName; private final Lazy isEmbedded; private final Lazy embeddedPrefix; + private final NamingStrategy namingStrategy; private boolean forceQuote = true; /** - * Creates a new {@link AnnotationBasedPersistentProperty}. + * Creates a new {@link BasicRelationalPersistentProperty}. * * @param property must not be {@literal null}. * @param owner must not be {@literal null}. * @param simpleTypeHolder must not be {@literal null}. * @param context must not be {@literal null} + * @since 2.0, use + * {@link #BasicRelationalPersistentProperty(Property, PersistentEntity, SimpleTypeHolder, NamingStrategy)}. */ + @Deprecated public BasicRelationalPersistentProperty(Property property, PersistentEntity owner, SimpleTypeHolder simpleTypeHolder, RelationalMappingContext context) { + this(property, owner, simpleTypeHolder, context.getNamingStrategy()); + } + + /** + * Creates a new {@link BasicRelationalPersistentProperty}. + * + * @param property must not be {@literal null}. + * @param owner must not be {@literal null}. + * @param simpleTypeHolder must not be {@literal null}. + * @param namingStrategy must not be {@literal null} + * @since 2.0 + */ + public BasicRelationalPersistentProperty(Property property, PersistentEntity owner, + SimpleTypeHolder simpleTypeHolder, NamingStrategy namingStrategy) { super(property, owner, simpleTypeHolder); + this.namingStrategy = namingStrategy; - Assert.notNull(context, "context must not be null."); - - this.context = context; + Assert.notNull(namingStrategy, "NamingStrategy must not be null."); this.isEmbedded = Lazy.of(() -> Optional.ofNullable(findAnnotation(Embedded.class)).isPresent()); @@ -76,7 +92,7 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent .map(Column::value) // .filter(StringUtils::hasText) // .map(this::createSqlIdentifier) // - .orElseGet(() -> createDerivedSqlIdentifier(context.getNamingStrategy().getColumnName(this)))); + .orElseGet(() -> createDerivedSqlIdentifier(namingStrategy.getColumnName(this)))); this.collectionIdColumnName = Lazy.of(() -> Optionals .toStream(Optional.ofNullable(findAnnotation(MappedCollection.class)) // @@ -92,7 +108,7 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent Optional.ofNullable(findAnnotation(Column.class)).map(Column::keyColumn)) // .filter(StringUtils::hasText).findFirst() // .map(this::createSqlIdentifier) // - .orElseGet(() -> createDerivedSqlIdentifier(context.getNamingStrategy().getKeyColumn(this)))); + .orElseGet(() -> createDerivedSqlIdentifier(namingStrategy.getKeyColumn(this)))); } private SqlIdentifier createSqlIdentifier(String name) { @@ -139,7 +155,7 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent return columnName.get(); } - /* + /* * (non-Javadoc) * @see org.springframework.data.mapping.model.AbstractPersistentProperty#getOwner() */ @@ -148,17 +164,17 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent return (RelationalPersistentEntity) super.getOwner(); } - /* + /* * (non-Javadoc) * @see org.springframework.data.relational.core.mapping.RelationalPersistentProperty#getReverseColumnName() */ @Override public SqlIdentifier getReverseColumnName() { return collectionIdColumnName.get() - .orElseGet(() -> createDerivedSqlIdentifier(context.getNamingStrategy().getReverseColumnName(this))); + .orElseGet(() -> createDerivedSqlIdentifier(this.namingStrategy.getReverseColumnName(this))); } - /* + /* * (non-Javadoc) * @see org.springframework.data.relational.core.mapping.RelationalPersistentProperty#getReverseColumnName(org.springframework.data.relational.core.mapping.PersistentPropertyPathExtension) */ @@ -166,10 +182,10 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent public SqlIdentifier getReverseColumnName(PersistentPropertyPathExtension path) { return collectionIdColumnName.get() - .orElseGet(() -> createDerivedSqlIdentifier(context.getNamingStrategy().getReverseColumnName(path))); + .orElseGet(() -> createDerivedSqlIdentifier(this.namingStrategy.getReverseColumnName(path))); } - /* + /* * (non-Javadoc) * @see org.springframework.data.relational.core.mapping.RelationalPersistentProperty#getKeyColumn() */ @@ -178,7 +194,7 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent return isQualified() ? collectionKeyColumnName.get() : null; } - /* + /* * (non-Javadoc) * @see org.springframework.data.relational.core.mapping.RelationalPersistentProperty#isQualified() */ @@ -187,7 +203,7 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent return isMap() || isListLike(); } - /* + /* * (non-Javadoc) * @see org.springframework.data.relational.core.mapping.RelationalPersistentProperty#getQualifierColumnType() */ @@ -204,7 +220,7 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent return Integer.class; } - /* + /* * (non-Javadoc) * @see org.springframework.data.relational.core.mapping.RelationalPersistentProperty#isOrdered() */ @@ -213,7 +229,7 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent return isListLike(); } - /* + /* * (non-Javadoc) * @see org.springframework.data.relational.core.mapping.RelationalPersistentProperty#isEmbedded() */ @@ -222,7 +238,7 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent return isEmbedded.get(); } - /* + /* * (non-Javadoc) * @see org.springframework.data.relational.core.mapping.RelationalPersistentProperty#getEmbeddedPrefix() */ diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/RelationalMappingContext.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/RelationalMappingContext.java index 56080fd2..74654963 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/RelationalMappingContext.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/RelationalMappingContext.java @@ -102,7 +102,7 @@ public class RelationalMappingContext RelationalPersistentEntity owner, SimpleTypeHolder simpleTypeHolder) { BasicRelationalPersistentProperty persistentProperty = new BasicRelationalPersistentProperty(property, owner, - simpleTypeHolder, this); + simpleTypeHolder, this.namingStrategy); persistentProperty.setForceQuote(isForceQuote()); return persistentProperty;