我想使用java在数据库中存储带有链接的Riak Pojo对象。虽然字段类型是Collection <RiakLink>
,但它会继续抛出相同的异常“riak links field必须是Collection <RiakLink>
”。
代码: Pojo {
public String name;
@RiakKey
public String key;
@RiakLinks
@JsonIgnore
public Collection<RiakLink> collection = new ArrayList<RiakLink>();
}
公共课Riak2 {
public static void main(String[] args) throws RiakException {
IRiakClient client = RiakFactory.httpClient();
Pojo p = new Pojo();
p.name = "Pojo";
p.key = "First";
p.collection.add(new RiakLink("list","Second","next"));
client.fetchBucket("list").execute().store(p);
}
}
异常:线程“main”中的异常java.lang.RuntimeException:java.lang.IllegalArgumentException:riak links field必须
是com.basho.riak.client.convert.reflect.AnnotationCache.get(AnnotationCache.java:56)的集合<RiakLink>
请给我一个帮助 感谢
答案 0 :(得分:1)
我在客户端的当前1.1.3和1.4.2版本中都测试了这个,但无法重现此问题。
此外,实际上还有unit test that ensures this works。
查看AnnotationCache
的历史记录,我找不到有关此问题的地方,因为它是在大约两年前创建的,因此排除您使用旧版本的客户端错误。
鉴于此,我建议重建您的项目/重新检查您在Q中列出的代码是实际使用的代码。如图所示,它没有问题。