Description
Nick opened DATAREDIS-495 and commented
For example, attempting to store an Exception fails with ClassCastException:
Caused by: java.lang.ClassCastException: [Ljava.lang.StackTraceElement; cannot be cast to java.util.Collection
at org.springframework.data.redis.core.convert.MappingRedisConverter$3.doWithPersistentProperty(MappingRedisConverter.java:411) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter$3.doWithPersistentProperty(MappingRedisConverter.java:394) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:310) ~[spring-data-commons-1.12.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.writeInternal(MappingRedisConverter.java:394) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.access$900(MappingRedisConverter.java:104) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter$3.doWithPersistentProperty(MappingRedisConverter.java:414) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter$3.doWithPersistentProperty(MappingRedisConverter.java:394) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:310) ~[spring-data-commons-1.12.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.writeInternal(MappingRedisConverter.java:394) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.write(MappingRedisConverter.java:349) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.write(MappingRedisConverter.java:104) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.RedisKeyValueAdapter.put(RedisKeyValueAdapter.java:177) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.keyvalue.core.KeyValueTemplate$2.doInKeyValue(KeyValueTemplate.java:213) ~[spring-data-keyvalue-1.1.1.RELEASE.jar:na]
at org.springframework.data.keyvalue.core.KeyValueTemplate.execute(KeyValueTemplate.java:377) ~[spring-data-keyvalue-1.1.1.RELEASE.jar:na]
... 32 common frames omitted
Similarly, attempting to save a String array results in:
Caused by: java.lang.IllegalArgumentException: Unsupported Collection type: [Ljava.lang.String;
at org.springframework.core.CollectionFactory.createCollection(CollectionFactory.java:201) ~[spring-core-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.data.redis.core.convert.MappingRedisConverter.readCollectionOfSimpleTypes(MappingRedisConverter.java:547) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.access$300(MappingRedisConverter.java:104) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter$1.doWithPersistentProperty(MappingRedisConverter.java:232) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter$1.doWithPersistentProperty(MappingRedisConverter.java:204) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:310) ~[spring-data-commons-1.12.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.readInternal(MappingRedisConverter.java:204) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.read(MappingRedisConverter.java:156) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.read(MappingRedisConverter.java:104) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.RedisKeyValueAdapter.get(RedisKeyValueAdapter.java:275) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.keyvalue.core.KeyValueTemplate$4.doInKeyValue(KeyValueTemplate.java:274) ~[spring-data-keyvalue-1.1.1.RELEASE.jar:na]
at org.springframework.data.keyvalue.core.KeyValueTemplate.execute(KeyValueTemplate.java:377) ~[spring-data-keyvalue-1.1.1.RELEASE.jar:na]
... 32 common frames omitted
Affects: 1.7.1 (Hopper SR1)
Issue Links:
- DATAREDIS-492 "CollectionLike" properties are force cast into Collection<?> even though they could be arrays
("duplicates")