OrientDB Java批导入

OrientDB Java批导入,java,graph,orientdb,bulkinsert,batch-insert,Java,Graph,Orientdb,Bulkinsert,Batch Insert,当我使用Java时,OrientDB中的批导入有一个更大的问题 我的数据是recordID和令牌的集合。对于每个ID,都存在一组令牌,但令牌可以在多个ID中 例如: ID标记 1、2、3、4 2、3、5、7 3 1,2,4 我的图形应该有两种类型的垂直:rIDClass和tokenClass。我想给每个顶点一个对应于recordID和标记的ID。因此tokenClass顶点的总数应该是数据中唯一标记的总数。(每个令牌只创建一次!) 我怎样才能意识到这个问题?我尝试了原始文档中的“定制批量插入”,

当我使用Java时,OrientDB中的批导入有一个更大的问题

我的数据是recordID和令牌的集合。对于每个ID,都存在一组令牌,但令牌可以在多个ID中

例如:

ID标记

1、2、3、4

2、3、5、7

3 1,2,4

我的图形应该有两种类型的垂直:
rIDClass
tokenClass
。我想给每个顶点一个对应于recordID和标记的ID。因此tokenClass顶点的总数应该是数据中唯一标记的总数。(每个令牌只创建一次!)

我怎样才能意识到这个问题?我尝试了原始文档中的“定制批量插入”,并尝试了蓝图文档中描述的“批量实现”方法

第一种方法的问题是,OrientDB为每个插入的标记创建一个单独的顶点,该顶点具有自定义ID,该ID由系统本身设置

第二种方法的问题是,当我尝试向batchgraph添加顶点时,我无法设置相应的顶点类,此外,我还得到了一个异常。这是第二种方法的代码:

BatchGraph<OrientGraph> bgraph = new BatchGraph<OrientGraph>(graph, VertexIDType.STRING, 1);
Vertex vertex1 =  bgraph.addVertex(1);
vertex1.setProperty("uid", 1);
我得到以下例外情况:

Exception in thread "main" java.lang.ClassCastException:
com.tinkerpop.blueprints.util.wrappers.batch.BatchGraph$BatchVertex cannot be cast to com.tinkerpop.blueprints.impls.orient.OrientVertex
    at com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.addEdge(OrientBaseGraph.java:612)
    at App.indexRecords3(App.java:83)
    at App.main(App.java:47)

我不知道我是否理解正确,但如果您想要这样的模式:

试试这个:

Vertex vertex1 = g.addVertex("class:rIDClass");
vertex1.setProperty("uid", 1);

Vertex token2 = g.addVertex("class:tokenClass");
token2.setProperty("uid", 2);

Edge edge1 = g.addEdge("class:rIDClass", vertex1, token2, "EdgeConnectClass");
希望能有帮助


“问候”

可能会有帮助,谢谢,但我想创建一个批插入,而您的方法仅适用于普通插入。我解决了这个问题,但不是使用Batchgraph,而是使用OrientDB文档中的自定义批插入。注意!!!:我不得不放弃交易!!!
Vertex vertex1 = g.addVertex("class:rIDClass");
vertex1.setProperty("uid", 1);

Vertex token2 = g.addVertex("class:tokenClass");
token2.setProperty("uid", 2);

Edge edge1 = g.addEdge("class:rIDClass", vertex1, token2, "EdgeConnectClass");