0

我試圖做如何在Datastax DSE 5.0 Graph中提交和回滾圖形操作?

DseCluster dseCluster = null; 

    try { 
     dseCluster = DseCluster.builder() 
       .addContactPoint("192.168.1.43") 
       .build(); 
     DseSession dseSession = dseCluster.connect(); 
     GraphTraversalSource g = DseGraph.traversal(dseSession, new GraphOptions().setGraphName("graph")); 
     GraphStatement graphStatement = DseGraph.statementFromTraversal(g.addV("test")); 
     GraphResultSet grs = dseSession.executeGraph(graphStatement.setGraphName("graph")); 
     System.out.println(grs.one().asVertex()); 

     g.tx().commit(); 

    } finally { 
     if (dseCluster != null) dseCluster.close(); 
    } 

,因爲這是在TitanDB允許之前它是由Datastax收購,但我得到「圖形不支持事務」

Exception in thread "main" java.lang.UnsupportedOperationException: Graph does not support transactions 
00:27:52.420 [cluster1-nio-worker-0] DEBUG io.netty.buffer.PoolThreadCache - Freed 26 thread-local buffer(s) from thread: cluster1-nio-worker-0 
    at org.apache.tinkerpop.gremlin.structure.Graph$Exceptions.transactionsNotSupported(Graph.java:1127) 
    at org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph.tx(EmptyGraph.java:75) 
    at org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.tx(GraphTraversalSource.java:320) 
    at testbed.TestBed.main(TestBed.java:28) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 

我找不到的東西除了提到Datastax DSE Graph作爲事務處理以外的其他文檔。

謝謝!

回答

2

Michail,在Andy回答的另一篇文章中,他提供了一些關於DSE如何「做」交易的信息。我們不直接向最終用戶公開Tinkerpop事務API。事務處理目前是隱式的,每個executestatement調用都將觸發DSE Graph Server中的Tinkerpop事務機制。下面是一個快速而骯髒的GitHub示例,展示了事務如何與DSE圖形一起工作 - https://github.com/jlacefie/GraphTransactionExample

+0

對於某些上下文:http://stackoverflow.com/a/41232259/986160 @jilacefie謝謝!我也想知道這是否也解釋了一個事務(當沒有通過executeGraph())時:'''Vertex v = g.addV(「User」)。property(「uuid」,「testuuid231」)。next(); '''看起來當我做.next()它實際上存儲所有東西,直到這一點,所以它是一個事務權?如果我做v.property(「someotherprop」,「testprop」)之後,它是另一個事務?再次感謝,並保持良好的工作:) –

+0

其實我嘗試了我上面說的,它說'''java.lang.IllegalStateException:屬性添加不支持',當我試圖改變它從頂點提取後,數據庫與.next() –

+1

Michail,根據測試文檔在這裏:https://github.com/datastax/java-dse-graph/tree/1.0.0-beta1/manual它看起來像我們還不支持通過新的Fluent API進行突變。字符串傳遞機制是現在的方式。我已經要求我們的一位駕駛員團隊成員也查看此帖,並在必要時進行更正。感謝您的反饋btw。請隨時加入datastax academy圖表鬆散空間以進行更直接的交互。 – jlacefie