Redisson 在存储 java POJO 时创建一个额外的键

Redisson creates an extra key on storing a java POJO

我正在使用带有 spring boot (2.1.5) 的 redisson (3.11.4) 来存储 java 个对象。

我的 POJO 看起来像这样。

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@REntity
public class ParentRecord {

    @RId
    private String id;

    private String type;

    private String root;

    private Map<String, String> children;
}

然后我继续使用 merge 存储我的数据。

liveObjectService.merge(parentRecord);
messageKeyCache.put(parentRecord.getId(), parentRecord.getId(), 60, TimeUnit.SECONDS);

合并后我看到两个键,一个是实际数据。 redisson_live_object:{223334343322}:com.memorystore.schema.ParentRecord:id:java.lang.String 另一个是 redisson_live_object_field:{223334343322}:com.memorystore.schema.ParentRecord:children:org.redisson.RedissonMap

我可以通过 liveObjectService.delete(ParentRecord.class, someId); 删除第一个键 但这不会删除第二个密钥。我删除第一个键时不应该删除它吗?如果没有那么我该如何删除它?

1)添加@RCascade注解:

@RCascade(RCascadeType.ALL)
private Map<String, String> children;

2) 删除对象:

public void deleteByKey(K key) {
    T object = findByKey(key);
    liveObjectService.delete(object);
}

private T findByKey(K key) {
    return liveObjectService.get(type, key);
}

其中类型 - some class(ParentRecord.class).