Java Gremlin union with project incompatible types 错误
Java Gremlin union with project incompatible types error
我有这样的 gremlin 查询,它在 gremlin 控制台中完美运行:
g.V().has("Role", "id", "billing-admin").union(
__.valueMap().by(__.unfold()),
__.project("app").by(__.out("FOR").valueMap().by(__.unfold()))
);
但是,对于 java org.apache.tinkerpop:gremlin-core
,相同的查询在 gremlin 中失败,出现这样的错误:Incompatible equality constraint: Map<String, Object> and Map<Object, Object>
。
这是可以理解的,因为:
valueMap
returns GraphTraversal<Element, Map<Object, Object>>
project
returns GraphTraversal<Object, Map<String, Object>>
union
期望遍历对相同类型进行操作
是否有内置的解决方案?
我现在有的是这个,但看起来不吸引人:
g.V().has("Role", "id", "billing-admin").union(
__.valueMap().by(__.unfold()),
__.project("app").map(t -> Collections.<Object, Object>unmodifiableMap(t.get())).by(__.out("FOR").valueMap().by(__.unfold()))
);
我不确定您正在寻找哪种解决方案,但您不需要 lambda 来解决这个问题。你可以只进行第二次遍历:
g.V().has("Role", "id", "billing-admin").union(
__.valueMap().by(__.unfold()),
(GraphTraversal) __.project("app").by(__.out("FOR").valueMap().by(__.unfold()))
);
我有这样的 gremlin 查询,它在 gremlin 控制台中完美运行:
g.V().has("Role", "id", "billing-admin").union(
__.valueMap().by(__.unfold()),
__.project("app").by(__.out("FOR").valueMap().by(__.unfold()))
);
但是,对于 java org.apache.tinkerpop:gremlin-core
,相同的查询在 gremlin 中失败,出现这样的错误:Incompatible equality constraint: Map<String, Object> and Map<Object, Object>
。
这是可以理解的,因为:
valueMap
returnsGraphTraversal<Element, Map<Object, Object>>
project
returnsGraphTraversal<Object, Map<String, Object>>
union
期望遍历对相同类型进行操作
是否有内置的解决方案?
我现在有的是这个,但看起来不吸引人:
g.V().has("Role", "id", "billing-admin").union(
__.valueMap().by(__.unfold()),
__.project("app").map(t -> Collections.<Object, Object>unmodifiableMap(t.get())).by(__.out("FOR").valueMap().by(__.unfold()))
);
我不确定您正在寻找哪种解决方案,但您不需要 lambda 来解决这个问题。你可以只进行第二次遍历:
g.V().has("Role", "id", "billing-admin").union(
__.valueMap().by(__.unfold()),
(GraphTraversal) __.project("app").by(__.out("FOR").valueMap().by(__.unfold()))
);