我希望在我的nosql映射实体中包含以下字段:
private List cookieIds;
我可以为列表添加转换器吗?在这种情况下,如何在Casssandra中保存数据?
关于如何编写自定义转换器的任何提示都会很棒。
答案 0 :(得分:2)
LOL,我们正在实现@NoSqlEmbedded标记来处理这个问题,但它还没有完成,因为我正在努力实现它,所以我也可以做递归(想想@NoSqlEmbedded的heirarchy。)我们已完成扫描但需要实施marhsalling / unmarshalling。
注意:我将尝试在本周末结束时使用@NoSqlEmbedded进行单元测试。
列表中的每个项目都必须是唯一的(即它实际上是一个Set not a List然后)。然后让我们说你有这个
public Request {
@NoSqlId
private String id;
@NoSqlEmbedded
private List<String> cookieIds;
private String property1;
}
它会像这样存储
rowkey(id) - &gt; property1 =“something”,cookieIds:cookieValue1 = null,cookieIds:cookieValue2 = null,cookieIds:cookieValue3 = null
所以,现在我们应该告诉你我们不存储它的原因....
rowkey(id) - &gt; property1 =“something”,cookieIds = cookieValue1,cookieValue2,cookieValue3
事实证明,如果您在此处的请求中读取了两台计算机,并且一台计算机添加了cookieValue4而另一台计算机删除了cookieValueValue2,在我们的实现中您正确地使用了cookieValue1,cookieValue3,cookieValue4,如果我们将其存储为第二版本,其中一个服务器会赢,所以你最终得到这两个结果中的一个(理想情况下你想要一个删除和一个添加独立工作)
我希望这是有道理的。现在,如果没有@NoSqlEmbedded标记,您可以使用第二种方法并拥有一个转换器,就像我在您的日期帖子中回复一样。如果你写日期转换器,我想你会明白如何做到这一点。首先尝试使用日期转换器作为练习。
如果您在此之后仍有疑问,请告诉我。
迪安