ClassCastException同时获取两个顶点的edge属性值

时间:2016-10-17 04:09:31

标签: scala graph-databases titan gremlin gremlin-server

我正在尝试获取两个顶点之间的边缘属性值并获得低于异常

  

java.lang.ClassCastException:java.lang.String无法强制转换为   scala.runtime.Nothing $

环境:Titan InMemory

代码:

val age = Key[Int]("age")

 A ---("knows",age -> 10) --> B

Gremlin查询:

graph.traversal().V().has("ID", "A").bothE("knows").as("x").otherV()
      .has("ID", "B").select("x").properties("age").headOption().get

输出: p [age-> 10]

graph.traversal().V().has("ID", "A").bothE("knows").as("x").otherV()
          .has("ID", "B").select("x").label().head()

输出:知道

graph.traversal().V().has("ID", "A").bothE("knows").as("x").otherV()
      .has("ID", "B").select("x").values("age").head()

输出:

  

java.lang.ClassCastException:java.lang.String无法强制转换为   scala.runtime.Nothing $

任何想法,当我尝试获取属性值时,我收到此错误

与gremlin控制台相同 http://gremlinbin.com/bin/view/58044fa931772

1 个答案:

答案 0 :(得分:0)

不确定这是正确的解决方案。 这解决了我的问题。

我正在将整数值插入边缘属性

之前:mgmt.makePropertyKey("age").dataType(classOf[String]).cardinality(Cardinality.SET).make()

之后:

mgmt.makePropertyKey("age").dataType(classOf[Integer]).cardinality(Cardinality.SET).make()

更改后,发生以下错误

  

java.lang.ClassCastException:java.lang.Integer无法强制转换为   scala.runtime.Nothing $

之前:

val age_value = graph.traversal().V().has("ID", "A").bothE("knows").as("x").otherV()
      .has("ID", "B").select("x").values("age").head()

之后:

val age_value:Integer = graph.traversal().V().has("ID", "A").bothE("knows").as("x").otherV()
      .has("ID", "B").select("x").values("age").head()