2017-10-23 1 views
0

그래프에 추가 한 후에 버텍스의 속성을 수정하는 방법에 대해서는 javadocs에서 명확하지 않습니다.DSE 그래프는 버텍스 속성을 수정합니다,

나는 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) 

에게 내가 그렇지 않으면 DSE 자바 드라이버를 사용하거나 기존의 정점 속성을 수정하는 방법을 이해 참조 할 수 있도록 질문을 얻는다.

답변

0

당신은 DataStax 자바 드라이버와 DSE 그래프에 연결할 때 :

g = DseGraph.traversal(dseSession) 

또는 그 문제에 대한 TinkerPop 드라이버 :

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

당신이받는 결과가 데이터베이스에서 분리됩니다. TinkerPop에서 우리는 그 상태를 "detached"라고 부릅니다. 따라서 g.V()에서 반환 된 버텍스는 "분리 된"상태에 있으며 해당 속성을 저장하기 위해 데이터베이스에 의해 백업 된 것처럼 직접 상호 작용할 수 없습니다.

모든 데이터베이스 변이는 Traversal API (즉, Gremlin)를 통해 발생해야합니다. 따라서 그래프의 모든 정점에 속성을 추가하려면 다음을 수행하십시오.

g.V().property('name','Santosh').iterate() 
+0

감사합니다. 그 말이 이치에 맞았다. 그리고 Traversal API도 잘 작동했습니다. –

관련 문제