0

我想在我的 nosql 映射实体中有以下字段:

私有列表 cookieIds;

我可以有一个列表转换器吗?在这种情况下,数据将如何保存在 Casssandra 中?

关于如何编写自定义转换器的任何提示都会很棒。

4

1 回答 1

2

大声笑,我们正在实现处理该问题的@NoSqlEmbedded 标记,但它还没有完成,因为我正在尝试实现它,所以我也可以进行递归(想想@NoSqlEmbedded 的层次结构。)我们已经完成扫描但需要实施编组/解组。

注意:我将尝试在本周末结束之前通过单元测试完成 @NoSqlEmbedded。

列表中的每个项目都必须是唯一的(即它实际上是一个集合而不是一个列表)。那么假设你有这个

public Request {
   @NoSqlId
   private String id;
   @NoSqlEmbedded
   private List<String> cookieIds;
   private String property1;
}

它将像这样存储

rowkey(id) -> property1="something", cookieIds:cookieValue1=null, cookieIds:cookieValue2=null, cookieIds:cookieValue3=null

所以,现在我们应该告诉你我们不这样存储它的原因......

rowkey(id) -> property1="something", cookieIds=cookieValue1, cookieValue2, cookieValue3

事实证明,如果您有两台机器在此处读取请求,一台机器添加 cookieValue4,另一台机器删除 cookieValueValue2,在我们的实现中,您正确地以 cookieValue1、cookieValue3、cookieValue4 结束,如果我们像第二个版本一样存储它,一个服务器将获胜,因此您最终会得到这两个结果之一(理想情况下,您希望一个删除和一个添加独立工作)

  • cookieValue1、cookieValue2、cookieValue3、cookieValue4
  • cookie 值 1, cookie 值 3

我希望这是有道理的。现在,没有@NoSqlEmbedded 标签,您可以使用第二种方法并拥有一个转换器,就像我在您的日期帖子中回复的那样。如果您编写日期转换器,我想您会明白如何做到这一点。首先尝试使用日期转换器作为练习。

让我知道如果你在那之后还有问题。

院长

于 2012-10-18T01:16:09.163 回答