我已经开始通过 Spring Source 开发 RIAK 项目。 根据对象之间的规范进行链接,然后进行链接行走非常简单。
我正在保存 2 个对象,在它们之间进行链接,然后尝试检索数据:
MyPojo p1 = new MyPojo("o1", "m1");
MyPojo p2 = new MyPojo("o2", "m2");
riakManager.set(bucketName1, "k1", p1);
riakManager.set(bucketName2, "k2", p2);
riakManager.link(bucketName2, "k2", bucketName1, "k1", tagName);
System.out.println(riakManager.get(bucketName1, "k1"));
System.out.println(riakManager.linkWalk(bucketName1, "k1", "_"));
问题是链接之后,源(“k1”)的内容被删除,只保留链接。这是打印输出:
null
[MyPojo [str1=o2, str2=m2, number=200]]
知道为什么链接操作会从源中删除该值吗? 如果我尝试在链接后(再次)设置源值,则链接将被删除...
谢谢, 奥维德。
最佳答案
Riak 要求链接和数据存储在一个操作中。您无法在没有另一个的情况下更新其中一个(目前)。
因此,每次设置链接时,操作都必须写回数据。我不知道 Spring 适配器是否考虑到了这一点。我确实看到了 Riak 和 Spring 开发人员之间关于此问题的一些消息,但不知道是否有任何问题已修复。
但无论如何,我也倾向于使用原生 Riak Java 客户端而不是 Spring。
关于java - RIAK 中的 LinkWalk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11384068/