[英]Creating vertex in ArangoDB with batch mode
嘗試使用ArangoDB Java API創建頂點和邊緣而不激活批處理模式,一切正常。 但是,啟用批處理模式時,它會在創建頂點時拋出未知錯誤。 下面是Java代碼和異常詳細信息。 知道為什么會這樣嗎? 提前致謝!
public static void main(String[] args) throws ArangoException {
createNodesInBatch();
}
static public void createNodesInBatch() throws ArangoException {
ArangoConfigure configure = new ArangoConfigure();
configure.init();
ArangoDriver arangoDriver = new ArangoDriver(configure);
arangoDriver.createDatabase("small_db");
System.out.println("Database created.");
arangoDriver.setDefaultDatabase("small_db");
arangoDriver.createCollection("testEdgeCollection",
new CollectionOptions().setType(CollectionType.EDGE));
arangoDriver.createCollection("testVertexCollection",
new CollectionOptions().setType(CollectionType.DOCUMENT));
EdgeDefinitionEntity ed = new EdgeDefinitionEntity();
// add edge collection name
ed.setCollection("testEdgeCollection");
// add vertex collection names
ed.getFrom().add("testVertexCollection");
// add vertex collection names
ed.getTo().add("testVertexCollection");
List<EdgeDefinitionEntity> edgeDefinitions = new ArrayList<EdgeDefinitionEntity>();
edgeDefinitions.add(ed);
arangoDriver.createGraph("testGraph", edgeDefinitions, null, false);
System.out.println("Graph created.");
arangoDriver.startBatchMode();;
System.out.println("Batch mode started.");
for (int nodeIdx = 0; nodeIdx < 10; nodeIdx++)
{
String nodeName = "node_" + nodeIdx;
SimpleNode node = new SimpleNode(nodeName);
VertexEntity<SimpleNode> vertex = arangoDriver.graphCreateVertex("testGraph", "vertextCollection", node, false);
}
System.out.println("Batch execution started to create nodes");
arangoDriver.executeBatch();
}
數據庫創建。
圖表已創建。
批量模式已開始。
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy14.createVertex(Unknown Source)
at com.arangodb.ArangoDriver.graphCreateVertex(ArangoDriver.java:4570)
at WhichDB.ArangoDBTest.App.createNodesInBatch(App.java:311)
at WhichDB.ArangoDBTest.App.main(App.java:327)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.arangodb.http.InvocationHandlerImpl.invoke(InvocationHandlerImpl.java:38)
... 4 more
Caused by: com.arangodb.ArangoException: unknown error
at com.arangodb.impl.InternalGraphDriverImpl.createVertex(InternalGraphDriverImpl.java:329)
at com.arangodb.impl.InternalGraphDriverImpl.createVertex(InternalGraphDriverImpl.java:294)
... 9 more
ArangoDB Java驅動程序出錯。 版本2.7.3中修復了驅動程序中的問題。
我將您的好示例代碼添加到我的測試中並使用ArangoDB 2.8.6進行測試。
在github上下載ArangoDB java驅動程序並使用maven編譯它:
mvn clean install -DskipTests=true -Dgpg.skip=true -Dmaven.javadoc.skip=true -B
Maven創建包含目標目錄中所有依賴項的獨立驅動程序JAR文件(arangodb-java-driver-XXX-SNAPSHOT-standalone.jar)。
獲取示例代碼:
wget https://gist.githubusercontent.com/anonymous/a430ba1129ccfb0dc1ac31af4dd02d98/raw/8db1033cacd9656f92b8c5b34f5fb1431df8730c/NodesInBatchExample.java
編譯示例代碼:
javac -classpath arangodb-java-driver-X.X.X-SNAPSHOT-standalone.jar NodesInBatchExample.java
在默認端口上啟動ArangoDB而不進行身份驗證並運行示例代碼:
java -classpath arangodb-java-driver-X.X.X-SNAPSHOT-standalone.jar:. NodesInBatchExample
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.