График DSE изменяет свойства вершины,

Таким образом, из javadocs не очевидно, как изменить свойства вершины после добавления в граф.

Я попробовал способ TinkerPop.

GraphTraversalSource g = DseGraph.traversal(dseSession);
g.V().toStream().forEach(vertex -> vertex.property("name", "Santosh"));

Но я получаю исключение

Exception in thread "main" java.lang.IllegalStateException: Property addition is not supported
    at org.apache.tinkerpop.gremlin.structure.Element$Exceptions.propertyAdditionNotSupported(Element.java:133)
    at org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex.property(DetachedVertex.java:91)
    at com.trimble.tpaas.profilex.random.MainGraphConnectivity.lambda$testSchemaCreation$0(MainGraphConnectivity.java:41)
    at org.apache.tinkerpop.gremlin.process.traversal.Traversal.forEachRemaining(Traversal.java:250)
    at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
    at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
    at com.trimble.tpaas.profilex.random.MainGraphConnectivity.testSchemaCreation(MainGraphConnectivity.java:41)
    at com.trimble.tpaas.profilex.random.MainGraphConnectivity.main(MainGraphConnectivity.java:23)

Итак, вопрос, куда я могу обратиться, чтобы понять, как изменить существующее свойство вершины с помощью java-драйвера DSE или иным образом.


person Sathyakumar Seshachalam    schedule 23.10.2017    source источник


Ответы (1)


При подключении к DSE Graph с помощью Java-драйвера DataStax:

 g = DseGraph.traversal(dseSession)

или драйвер TinkerPop, если на то пошло:

graph = EmptyGraph.instance()
g = graph.traversal().withRemote('conf/remote-graph.properties')

полученные вами результаты отключаются от базы данных. В TinkerPop мы называем это состояние «отсоединенным». Таким образом, вершины, возвращенные из g.V(), находятся в «отключенном» состоянии, и вы не можете напрямую взаимодействовать с ними, как будто они поддерживаются базой данных для хранения своих свойств.

Все мутации базы данных должны происходить через Traversal API (например, Gremlin). Итак, если вы хотите добавить свойство ко всем вершинам вашего графа, вы можете сделать:

g.V().property('name','Santosh').iterate()
person stephen mallette    schedule 23.10.2017
comment
Хорошо, спасибо. Это имело смысл. И Traversal API тоже работал. - person Sathyakumar Seshachalam; 24.10.2017