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>

这是可以理解的,因为:

是否有内置的解决方案?

我现在有的是这个,但看起来不吸引人:

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()))
);