我想使用UUID密钥将实体存储在Redis中:
@RedisHash("order")
public class Order {
@Id
private UUID id;
...
}
但是,在此设置下出现以下异常:
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.util.UUID] to type [byte[]]
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:321) ~[spring-core-5.0.5.RELEASE.jar:5.0.5.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:194) ~[spring-core-5.0.5.RELEASE.jar:5.0.5.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:174) ~[spring-core-5.0.5.RELEASE.jar:5.0.5.RELEASE]
at org.springframework.data.redis.core.convert.MappingRedisConverter.toBytes(MappingRedisConverter.java:948) ~[spring-data-redis-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.data.redis.core.convert.MappingRedisConverter.lambda$writeInternal$2(MappingRedisConverter.java:592) ~[spring-data-redis-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:328) ~[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.data.redis.core.convert.MappingRedisConverter.writeInternal(MappingRedisConverter.java:584) ~[spring-data-redis-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.data.redis.core.convert.MappingRedisConverter.write(MappingRedisConverter.java:396) ~[spring-data-redis-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.data.redis.core.convert.MappingRedisConverter.write(MappingRedisConverter.java:122) ~[spring-data-redis-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.data.redis.core.RedisKeyValueAdapter.put(RedisKeyValueAdapter.java:208) ~[spring-data-redis-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.data.keyvalue.core.KeyValueTemplate.lambda$update$1(KeyValueTemplate.java:204) ~[spring-data-keyvalue-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.data.keyvalue.core.KeyValueTemplate.execute(KeyValueTemplate.java:343) ~[spring-data-keyvalue-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.data.keyvalue.core.KeyValueTemplate.update(KeyValueTemplate.java:204) ~[spring-data-keyvalue-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.data.keyvalue.repository.support.SimpleKeyValueRepository.save(SimpleKeyValueRepository.java:103) ~[spring-data-keyvalue-2.0.6.RELEASE.jar:2.0.6.RELEASE]
...
当使用String代替UUID时,不会出现此类异常。
如何使用UUID作为ID类型?
编辑:
为了更精确,您必须在上下文中使用名称redisCustomConversions注册一个CustomConversion
bean。
所以在你的情况下
@Bean
public CustomConversion redisCustomConversions(){
return new CustomConversions(
Arrays.asList(new UUIDToStringConverter(), new StringToUUIDConverter()))))
}
原版的:
我认为解决此问题的最简单方法是为uuid编写类型转换器。像一个
class UUIDConverter implements Converter<UUID, String>
或在需要时
class UUIDConverter implements Converter<UUID, byte[]>
您必须在上下文中将其注册为bean。
我在本地配置了redis sentinel,在两个不同的端口10001和10002上运行。我有相同的sentinel身份验证设置。 Redis哨兵配置 使用的JAR版本 Spring-data-redis:2.0.10。发布 莴苣(io.莴苣.莴苣芯):5.0.5.RELEASE 在尝试连接到redisSentinelConfiguration时,我一直收到NOAUTH身份验证请求错误 使用Spr
问题内容: 我正在使用Spring JPA,我需要一个本机查询。通过该查询,我只需要从表中获取两个字段,因此我尝试使用Projections。它不起作用,这是我得到的错误: 我试图严格按照所链接页面的说明进行操作,试图使查询为非本地查询(如果我使用投影,我是否真的需要将查询设为本地查询,顺便说一句?),但我总是会遇到该错误。 如果使用接口,则可以,但是结果是代理,因此我真的需要它们成为“正常结果”
谢谢你的帮助。我真的不明白我做错了什么。
我试图通过从spring-integration向REST服务发送一个JSON字符串。 但是得到错误 找不到能够从java.lang.String类型转换为org.springframework.http.ResponseEntity<?>类型的转换器 分享有关详情 有人能帮忙吗?我在这里漏掉了什么?