イムは、使用してグレムリン-Scalaの3.4.1.5を海王星に対して、私はそうのようなリストまたはSetでケースクラスを使用して、頂点を追加することができませんでしだ。頂点の追加は、それが存在しない場合に機能するようです
//connection
Cluster.build()
.addContactPoint(endpoint)
.serializer(new GraphSONMessageSerializerV3d0())
.port(port)
.create()
val g = EmptyGraph.instance.asScala().configure(_.withRemote(DriverRemoteConnection.using(cluster)))
// adding vertex
case class Person(name: String, friends: Seq[String])
case class Person(name: String, friends: Set[String]) // also does not work
g + Person
スタックトレース
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)
Neptuneは、プロパティタイプとしてListをサポートしていません[1]。順序付きリストが必要な場合、それを行う1つの方法は、それを単一のプロパティにシリアル化することです(例:リストのjson文字列)。正しく読み戻すには、アプリケーション層に少しロジックが必要です。リストを作成するもう1つの一般的な方法は、リストアイテムをそれ自体が頂点としてモデル化し、グラフのエッジとしてモデル化することです。
例:住所のリストのプロパティを使用する代わりに、住所を頂点ラベルにし、個人から住所1、住所2へのエッジを設定します。このオプションは、リストへの変更が予想される場合に適しています。
https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-differences.html
それが私が使用することになったので、これを答えとして受け入れる。いくつか明確にしておきたいことがあります。
Neptuneは、Gremlin property()ステップなどを使用する場合に、SingleおよびSetカーディナリティプロパティをサポートします。
私は中に問題を開いたグレムリン-Scalaの私はネイティブTinkerPopのカーディナリティがためにサポートしなければならないと考えているためList
とSet
。List
今日のNeptuneでは失敗しますが、ユーザーはSet
ユースケースで機能するかどうかに切り替えることができ、それで機能するため、問題ありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加