Titan 检索顶点属性
Posted
技术标签:
【中文标题】Titan 检索顶点属性【英文标题】:Titan Retrieving Vertex Properties 【发布时间】:2016-05-26 02:59:46 【问题描述】:我正在高度多线程的环境中创建图表,但遇到了一个奇怪的错误。在运行时,我有时会收到一个错误,即我尝试访问的属性不存在。
java.lang.IllegalStateException: The property does not exist as it has no key, value, or associated element
为了解决这个问题,我在错误发生时设置了一个断点并发现了一些奇怪的行为。
当我跑步时:
Vertex vertex = graph.traversal().V(123).next();
vertex.properties();
我看到了我期望的所有属性的列表,例如"PROP1"
、"PROP2"
和"PROP3"
。但是,当我运行以下命令时:
vertex.property("PROP1").value();
我收到该属性不存在的错误。更奇怪的是vertex.property(xxx).value();
适用于其他属性"PROP2"
和"PROP3"
。什么会导致这种奇怪的行为?
【问题讨论】:
【参考方案1】:作为一种好的做法,您应该在点击next()
之前检查一下
例如,
traversal=graph.traversal().V(123);
if (traversal.hasNext()) // avoid fast no property exception here.
vertex=traversal.next()
另一件事,vertex.property("PROP1")
检索值可能有点奇怪。 property()
检索属性对象,这不是你想要的我假设,如果它没有找到它,它会引发异常。相反,获得价值的更好方法是通过vertex.values("PROP1")
。如果属性不存在,这将返回 null。
查看文档here
【讨论】:
感谢您的回答和好的建议,但这并不能解决底层问题。使用values()
而不是 property()
也会引发异常。潜在的问题是,当我列出所有属性键时,我看到了我所期望的一切。即"PROP1"
到PROPN
但是当我使用vertex.value("PROP1")
或vertex("PROP1")
请求值时,我得到了缺少的属性异常。此外,当仅使用vertex.values()
时,我看到了我所期望的所有值。即vertex.value("PROP1")
应该返回什么以上是关于Titan 检索顶点属性的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Gremlin 从我在 Titan 中关注的所有用户(边缘)获取帖子(顶点)
如何在 .net mvc 中使用 c# 创建和删除边缘属性(Titan 1.0)?
如何使用 Gremlin 在 Titan 中获取 Edge 日期属性大于上次访问日期的通知?