为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Spring Data Redis 进行序列化时如何正确忽略类成员?

使用 Spring Data Redis 进行序列化时如何正确忽略类成员?

米脂 2021-09-03 10:33:01
我希望有人能提供帮助,因为我真的不知道如何解决以下问题:我想使用 Spring Data Redisin序列化Entity和ThumbnailUrlEntity(见下面的代码)的一些对象CrudRepository。由于类有会员我不想连载,我试图通过任何注释类本身有忽略它们以各种方式@JsonIgnoreProperties或通过与标注各部件/性能@JsonIgnore或Filters在RedisConfig.java用CustomConversion。现在的问题是,无论我尝试哪种忽略方式,org.springframework.data.keyvalue.core.UncategorizedKeyValueException: Path to property must not be null or empty.; nested exception is java.lang.IllegalArgumentException: Path to property must not be null or empty.当我尝试保存相应的对象时,总是会遇到相同的错误。(有关更多详细信息,请参阅下面的 Stacktrace)我什至在这些课程中使用 MixIn 尝试过,但效果不佳......所以问题是:如何在使用 Spring-Data-Redis 序列化某个类的对象时正确忽略属性?实体.java@EqualsAndHashCode(exclude = "domainObject")@ToString(exclude = "domainObject")@NoArgsConstructor//@JsonIgnoreProperties("domainObject")@JsonFilter("myEntityFilter")public abstract class Entity<T extends DomainObject> {    @TimeToLive    protected final static long TIME_TO_LIVE = 60 * 60 * 24;    @Id    @Indexed    private String id;//    @Transient//    @JsonIgnore    private T domainObject;    public Entity(@NotNull T domainObject) {        this.domainObject = domainObject;    }    public abstract Entity<T> createFromDomainObject(@NotNull T domainObject);    public abstract void updateFromDomainObject(T domainObject);    public void updateFromDomainObject() {        this.updateFromDomainObject(this.getDomainObject());    }    public String getId() {        return id;    }//    @Transient//    @JsonIgnore    public T getDomainObject() {        return domainObject;    }    public void setDomainObject(T domainObject) {        this.domainObject = domainObject;    }}
查看完整描述

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

我认为您可以执行以下操作之一:

首先,您可以尝试使当前版本工作,这似乎并不容易。

您是否为 Redis配置了正确的序列化程序?在链接上有这个答案:

使用 StringRedisTemplate 替换 RedisTemplate。

默认情况下,RedisTemplate 使用 Java 序列化,StringRedisTemplate 使用 StringRedisSerializer。

这也可以解决您的问题...

为 Redis 使用专用 POJO 的第二个选项。您可以手动或使用 Java bean 映射器(如MapStruct )进行值交换。

第三个选项可能是使用自定义序列化程序


查看完整回答
反对 回复 2021-09-03
  • 1 回答
  • 0 关注
  • 477 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号