Scala 写入Neptune时不支持的属性值类型:java.util.LinkedHashMap

Scala 写入Neptune时不支持的属性值类型:java.util.LinkedHashMap,scala,gremlin,tinkerpop3,amazon-neptune,gremlin-scala,Scala,Gremlin,Tinkerpop3,Amazon Neptune,Gremlin Scala,我正在使用Neptune,我无法使用带有列表或类似集合的case类添加顶点。“添加顶点”似乎在不存在时起作用 //连接 Cluster.build() .addContactPoint(端点) .serializer(新的GraphSONMessageSerializerV3d0()) .港口(港口) .create() val g=EmptyGraph.instance.asScala().configure(u0.withRemote(DriverRemoteConnection.using

我正在使用Neptune,我无法使用带有列表或类似集合的case类添加顶点。“添加顶点”似乎在不存在时起作用

//连接
Cluster.build()
.addContactPoint(端点)
.serializer(新的GraphSONMessageSerializerV3d0())
.港口(港口)
.create()
val g=EmptyGraph.instance.asScala().configure(u0.withRemote(DriverRemoteConnection.using(cluster)))
//添加顶点
案例类人员(姓名:String,好友:Seq[String])
案例类人物(姓名:String,好友:Set[String])//也不起作用
g+人
堆栈跟踪

org.apache.tinkerpop.gremlin.driver.exception.ResponseException: {"requestId":-087f-4868-b4b7-","code":"UnsupportedOperationException","detailedMessage":"Unsupported property value type: java.util.LinkedHashMap"}
java.util.concurrent.CompletionException: org.apache.tinkerpop.gremlin.driver.exception.ResponseException: {"requestId":"-087f-4868-b4b7-","code":"UnsupportedOperationException","detailedMessage":"Unsupported property value type: java.util.LinkedHashMap"}
    at java.util.concurrent.CompletableFuture.reportJoin(CompletableFuture.java:375)
    at java.util.concurrent.CompletableFuture.join(CompletableFuture.java:1934)
    at org.apache.tinkerpop.gremlin.driver.ResultSet.one(ResultSet.java:119)
    at org.apache.tinkerpop.gremlin.driver.ResultSet$1.hasNext(ResultSet.java:171)
    at org.apache.tinkerpop.gremlin.driver.ResultSet$1.next(ResultSet.java:178)
    at org.apache.tinkerpop.gremlin.driver.ResultSet$1.next(ResultSet.java:165)
    at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal$TraverserIterator.next(DriverRemoteTraversal.java:140)
    at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal$TraverserIterator.next(DriverRemoteTraversal.java:125)
    at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal.nextTraverser(DriverRemoteTraversal.java:106)

Re
不支持的属性值类型:java.util.LinkedHashMap

我没有neptune的设置,但是一个普通的scala
列表可能会工作。如果没有,以下是宏中的相关部分:


Re
不支持的属性值类型:java.util.LinkedHashMap

我没有neptune的设置,但是一个普通的scala
列表可能会工作。如果没有,以下是宏中的相关部分:


我认为Neptune可能不支持根据本文档列出的顶点属性:


为了测试这一点,您可以尝试对gremlin server或其他一些实现运行相同的代码

我相信Neptune可能不支持以下文档中的顶点列表属性:


要测试这一点,您可以尝试对gremlin server或其他一些实现运行相同的代码

Neptune不支持将列表作为属性类型[1]。如果需要一个有序列表,一种方法是将其序列化为单个属性(例如:列表的json字符串)。它确实需要应用层中的一些逻辑来正确地读回它。另一种处理列表的常用方法是将列表项单独建模为顶点,并将它们建模为图形中的边

例如:不要为地址列表设置属性,而是将地址设置为顶点标签,并在从Person到Address1到Address2之间设置边。如果您预期列表中会出现突变,则此选项会更好

更新 接受这个答案,因为这就是我最终使用的答案。我只想澄清几件事

Neptune在使用Gremlin property()步骤等时支持单一和设置基数属性


我在中打开了一个问题,因为我认为
List
Set
应该支持本机TinkerPop基数<代码>列表
将在今天的Neptune中失败,但这没关系,因为用户可以切换到
设置
,如果它适用于他们的用例,并且可以工作。

Neptune不支持将列表作为属性类型[1]。如果需要一个有序列表,一种方法是将其序列化为单个属性(例如:列表的json字符串)。它确实需要应用层中的一些逻辑来正确地读回它。另一种处理列表的常用方法是将列表项单独建模为顶点,并将它们建模为图形中的边

例如:不要为地址列表设置属性,而是将地址设置为顶点标签,并在从Person到Address1到Address2之间设置边。如果您预期列表中会出现突变,则此选项会更好

更新 接受这个答案,因为这就是我最终使用的答案。我只想澄清几件事

Neptune在使用Gremlin property()步骤等时支持单一和设置基数属性


我在中打开了一个问题,因为我认为
List
Set
应该支持本机TinkerPop基数<代码>列表
今天在Neptune会失败,但这没关系,因为用户可以切换到
设置
,如果它适用于他们的用例,那就可以了。

会试试看。会试试看。这是关于
列表
基数的。我的case类有一个列表,但是使用像gremlincala这样的库,我不应该关心它如何处理它。我希望它只是把它放到数据库里,然后再把它拿出来。这是关于
List
cardinality的。我的case类有一个列表,但是使用像gremlincala这样的库,我不应该关心它如何处理它。我希望它只是把它放进数据库,然后把它拿出来。我已经选择了选项A。我不想为不需要顶点的东西添加更多顶点,因为它会随着版本控制等而爆炸。最简单的方法就是自己处理json serDe。此外,海王星支持集合基数,但小精灵scala不能处理它。Neptune不直接支持它们中的任何一个,这一点我已经知道了。我已经选择了选项A。我不想为不需要顶点的东西添加更多顶点,因为它会随着版本控制等而爆炸。最简单的方法就是自己处理json serDe。此外,海王星支持集合基数,但小精灵scala不能处理它。海王星不直接支持他们中的任何一个,这一点我已经知道了。