Java 如何在Redis中存储HashMap

Java 如何在Redis中存储HashMap,java,spring-boot,redis,Java,Spring Boot,Redis,我必须使用SpringRedis在Redis中存储一个对象。对象是 @RedisHash(value = "shoppingcart") public class ShoppingCart { @Id private String cartGuid; private Map<String, List<CartItemDto>> promotionProductMap = new LinkedHashMap<String, List<CartItem

我必须使用SpringRedis在Redis中存储一个对象。对象是

@RedisHash(value = "shoppingcart")
public class ShoppingCart {
  @Id
  private String cartGuid;
  private Map<String, List<CartItemDto>> promotionProductMap = new LinkedHashMap<String, List<CartItemDto>>();
  private LinkedList<CartItemDto> cartItems = new LinkedList<>();
....
}
我有一个存储库要保存到Redis中

@Repository
public interface ShoppingCartRepository extends CrudRepository<ShoppingCart, String> {
}
它抛出异常

Caused by: java.lang.IllegalArgumentException: Target bean of type java.util.LinkedList is not of type of the persistent entity (com.test.CartItemDto)!
    at org.springframework.util.Assert.isTrue(Assert.java:68) ~[spring-core-4.3.4.RELEASE.jar:4.3.4.RELEASE]
    at org.springframework.data.mapping.model.BasicPersistentEntity.getPropertyAccessor(BasicPersistentEntity.java:397) ~[spring-data-commons-1.12.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver.doResolveIndexesFor(PathIndexResolver.java:92) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver.access$000(PathIndexResolver.java:50) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver$1.doWithPersistentProperty(PathIndexResolver.java:115) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver$1.doWithPersistentProperty(PathIndexResolver.java:95) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:312) ~[spring-data-commons-1.12.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver.doResolveIndexesFor(PathIndexResolver.java:95) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver.resolveIndexesFor(PathIndexResolver.java:79) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.MappingRedisConverter.write(MappingRedisConverter.java:357) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.MappingRedisConverter.write(MappingRedisConverter.java:109) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.RedisKeyValueAdapter.put(RedisKeyValueAdapter.java:183) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.keyvalue.core.KeyValueTemplate$1.doInKeyValue(KeyValueTemplate.java:168) ~[spring-data-keyvalue-1.1.5.RELEASE.jar:?]
    at org.springframework.data.keyvalue.core.KeyValueTemplate$1.doInKeyValue(KeyValueTemplate.java:158) ~[spring-data-keyvalue-1.1.5.RELEASE.jar:?]
    at org.springframework.data.keyvalue.core.KeyValueTemplate.execute(KeyValueTemplate.java:377) ~[spring-data-keyvalue-1.1.5.RELEASE.jar:?]
    ... 156 more
如果我删除promotionProductMap,它可以保存shoppingCart 我不知道为什么它不能保存Hashmap,它可以保存列表
有人知道如何将Hashmap保存到Redis吗?

没有办法将复杂对象列表保存到Redis,请检查其属性。您必须重新构造对象才能缓存它。它对速度的限制非常大,因此无法存储此类复杂对象。
shoppingCartRepository.save(shoppingCart);
Caused by: java.lang.IllegalArgumentException: Target bean of type java.util.LinkedList is not of type of the persistent entity (com.test.CartItemDto)!
    at org.springframework.util.Assert.isTrue(Assert.java:68) ~[spring-core-4.3.4.RELEASE.jar:4.3.4.RELEASE]
    at org.springframework.data.mapping.model.BasicPersistentEntity.getPropertyAccessor(BasicPersistentEntity.java:397) ~[spring-data-commons-1.12.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver.doResolveIndexesFor(PathIndexResolver.java:92) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver.access$000(PathIndexResolver.java:50) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver$1.doWithPersistentProperty(PathIndexResolver.java:115) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver$1.doWithPersistentProperty(PathIndexResolver.java:95) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:312) ~[spring-data-commons-1.12.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver.doResolveIndexesFor(PathIndexResolver.java:95) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.PathIndexResolver.resolveIndexesFor(PathIndexResolver.java:79) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.MappingRedisConverter.write(MappingRedisConverter.java:357) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.convert.MappingRedisConverter.write(MappingRedisConverter.java:109) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.redis.core.RedisKeyValueAdapter.put(RedisKeyValueAdapter.java:183) ~[spring-data-redis-1.7.5.RELEASE.jar:?]
    at org.springframework.data.keyvalue.core.KeyValueTemplate$1.doInKeyValue(KeyValueTemplate.java:168) ~[spring-data-keyvalue-1.1.5.RELEASE.jar:?]
    at org.springframework.data.keyvalue.core.KeyValueTemplate$1.doInKeyValue(KeyValueTemplate.java:158) ~[spring-data-keyvalue-1.1.5.RELEASE.jar:?]
    at org.springframework.data.keyvalue.core.KeyValueTemplate.execute(KeyValueTemplate.java:377) ~[spring-data-keyvalue-1.1.5.RELEASE.jar:?]
    ... 156 more