diff --git a/src/main/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentProperty.java b/src/main/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentProperty.java index 4e4a22256d..8189fa7220 100644 --- a/src/main/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentProperty.java +++ b/src/main/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentProperty.java @@ -32,6 +32,7 @@ import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; +import org.springframework.util.StringUtils; /** * Meta data about a property to be used by repository implementations. @@ -46,6 +47,7 @@ class BasicRelationalPersistentProperty extends AnnotationBasedPersistentPropert private static final Map, Class> javaToDbType = new LinkedHashMap<>(); static { + javaToDbType.put(Enum.class, String.class); javaToDbType.put(ZonedDateTime.class, String.class); javaToDbType.put(Temporal.class, Date.class); @@ -72,8 +74,11 @@ public BasicRelationalPersistentProperty(Property property, PersistentEntity Optional.ofNullable(findAnnotation(Column.class)).map(Column::value)); - this.keyColumnName = Lazy.of(() -> Optional.ofNullable( - findAnnotation(Column.class)).map(Column::keyColumn).filter(keyColumn -> !keyColumn.equals(""))); + this.keyColumnName = Lazy.of(() -> Optional.ofNullable( // + findAnnotation(Column.class)) // + .map(Column::keyColumn) // + .filter(StringUtils::hasText) // + ); } /* @@ -120,10 +125,12 @@ public String getReverseColumnName() { @Override public String getKeyColumn() { - if (isQualified()) + + if (isQualified()) { return keyColumnName.get().orElseGet(() -> context.getNamingStrategy().getKeyColumn(this)); - else + } else { return null; + } } @Override diff --git a/src/test/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentPropertyUnitTests.java b/src/test/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentPropertyUnitTests.java index 95a523c257..47b62c9f1e 100644 --- a/src/test/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentPropertyUnitTests.java +++ b/src/test/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentPropertyUnitTests.java @@ -89,12 +89,12 @@ public void detectsAnnotatedColumnName() { @Test // DATAJDBC-218 public void detectsAnnotatedColumnAndKeyName() { - RelationalPersistentEntity entity = context.getRequiredPersistentEntity(DummyEntity.class); + RelationalPersistentProperty listProperty = context // + .getRequiredPersistentEntity(DummyEntity.class) // + .getRequiredPersistentProperty("someList"); - assertThat(entity.getRequiredPersistentProperty("someList").getColumnName()) - .isEqualTo("dummy_column_name"); - assertThat(entity.getRequiredPersistentProperty("someList").getKeyColumn()) - .isEqualTo("dummy_key_column_name"); + assertThat(listProperty.getColumnName()).isEqualTo("dummy_column_name"); + assertThat(listProperty.getKeyColumn()).isEqualTo("dummy_key_column_name"); } private void checkTargetType(SoftAssertions softly, RelationalPersistentEntity persistentEntity, @@ -113,8 +113,7 @@ private static class DummyEntity { private final ZonedDateTime zonedDateTime; private final UUID uuid; - @Column(value="dummy_column_name", keyColumn="dummy_key_column_name") - private List someList; + @Column(value = "dummy_column_name", keyColumn = "dummy_key_column_name") private List someList; // DATACMNS-106 private @Column("dummy_name") String name;