【问题标题】:Titan Retrieving Vertex PropertiesTitan 检索顶点属性
【发布时间】: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"。什么会导致这种奇怪的行为?

【问题讨论】:

    标签: titan tinkerpop3


    【解决方案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") 应该返回什么
    猜你喜欢
    • 2023-03-27
    • 2013-06-12
    • 2016-12-02
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    相关资源
    最近更新 更多