当前位置: 首页 > 面试题库 >

Spring Data Redis-UUID ID-ConverterNotFoundException

方苗宣
2023-03-14
问题内容

我想使用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<?>类型的转换器 分享有关详情 有人能帮忙吗?我在这里漏掉了什么?

相关阅读

相关文章

相关问答