Spring Boot 应用程序在 redis 中不必要地添加“ClassName._class”属性

Spring boot app unnecessarily adds "ClassName._class" property in redis

提问人:coredev 提问时间:3/21/2023 最后编辑:coredev 更新时间:3/24/2023 访问量:62

问:

我在下面有保存在 Redis 中的 POJO“MyClass”。

class MyClass {
 @Id
 private String someId;
 
 private GenericAnimalID genericAnimalID;
 
 @Transient
 private GenericAnimal genericAnimal

}

class GenericAnimalId{
                       String variant;
                       String size;
        
            
                }
class SpecificAnimalId extends GenericAnimalId{
                       String someProperty;
            
                }
class GenericAnimal{
                   @Id
                   GenericAnimalId genericAnimalId;
        
                   String name;
        
            }

所以,基本上我把MyClass存储在redis中,它具有“genericAnimalID”属性。

现在,当我存储一些类型为 SpecificAnimalId 的 ID 时,在 Redis 中插入了一个额外的属性作为

{
genericAnimalId._class : package.SpecificAnimalId,
genericAnimalId : tiger
}

然而,当我存储 GenericAnimalId 类型的 Id 时,它工作正常,只插入我期望的 Id 值。

{
"genericAnimalId":animal
}

在第一种情况下,它在读取此值时会导致转换器问题。而在第二种情况下,没有插入额外的属性,代码在此之后工作正常。

java spring-boot :spring-data-redis 、redis-cache

评论


答: 暂无答案