liveobjectservice#persist返回空对象

drkbr07n  于 2021-06-10  发布在  Redis
关注(0)|答案(1)|浏览(473)

我正在使用redisson live objects 3.13.2,我有以下对象:

@Getter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
@REntity
public class ReporterObject {
    @RId
    private long id;
    private long rId;
    @RIndex
    @Setter
    private long sId;
    @Setter
    private boolean ac;
    @RIndex
    @Setter
    private Long parId;
    private int type;
    private Long pId;
    @Setter
    private ReporterObject parent; // can be null
    @Setter
    private int n_a = 0;
}

所以我有两个问题:
执行此操作(覆盖当前对象)时:

liveObjectService.delete(ReporterObject.class, reporterObject.getRId());
return liveObjectService.persist(reporterObject);

我有时会 java.lang.IllegalArgumentException: This REntity already exists. 虽然我事先做了一个删除。我可以得到它,即使缓存在那之前是完全空的。
有时在持久化操作假定成功之后,我收到的是一个空对象,因此当我尝试获取任何字段(例如调用 ReporterObject#getParentNullPointerException 当我调试它时,我看到一个空对象或不是“完全满”对象:

. 在这个例子中,我只有 sId 以及 type 但是没有 id ,否 rId ,否 ac 如我所说,如果我想 getAc()NullPointerException 被抛出。当然不仅仅限于这个领域。有时是其他字段丢失了。有时我会得到这样一个完全空的物体:

redis版本是6.0.5。
在这种情况下有什么办法吗?
谢谢!

72qzrwbm

72qzrwbm1#

打开已解决的错误:https://github.com/redisson/redisson/issues/2935

相关问题