diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/JdbcAggregateTemplateIntegrationTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/JdbcAggregateTemplateIntegrationTests.java index c6dd9f57e..71ce6893d 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/JdbcAggregateTemplateIntegrationTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/JdbcAggregateTemplateIntegrationTests.java @@ -1045,6 +1045,16 @@ class JdbcAggregateTemplateIntegrationTests { assertThat(template.findById(entity.id, WithInsertOnly.class).insertOnly).isEqualTo("first value"); } + @Test // GH-1460 + void readEnumArray() { + EnumArrayOwner entity = new EnumArrayOwner(); + entity.digits = new Color[]{Color.BLUE}; + + assertThat(template.save(entity)).isNotNull(); + + assertThat(template.findById(entity.id, EnumArrayOwner.class).digits).isEqualTo(new Color[]{Color.BLUE}); + } + private void saveAndUpdateAggregateWithVersion(VersionedAggregate aggregate, Function toConcreteNumber) { saveAndUpdateAggregateWithVersion(aggregate, toConcreteNumber, 0); @@ -1086,6 +1096,17 @@ class JdbcAggregateTemplateIntegrationTests { return jdbcTemplate.queryForObject("SELECT COUNT(*) FROM " + tableName, emptyMap(), Long.class); } + enum Color { + BLUE + } + + @Table("ARRAY_OWNER") + private static class EnumArrayOwner { + @Id Long id; + + Color[] digits; + } + @Table("ARRAY_OWNER") private static class ArrayOwner { @Id Long id; diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/BasicRelationalConverter.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/BasicRelationalConverter.java index 91a862ea0..583fbb343 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/BasicRelationalConverter.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/BasicRelationalConverter.java @@ -175,7 +175,7 @@ public class BasicRelationalConverter implements RelationalConverter { // TODO: We should add conversion support for arrays, however, // these should consider multi-dimensional arrays as well. - if (value.getClass().isArray() && (TypeInformation.OBJECT.equals(type) || type.isCollectionLike())) { + if (value.getClass().isArray() && !value.getClass().getComponentType().isEnum() && (TypeInformation.OBJECT.equals(type) || type.isCollectionLike())) { return value; }