У меня большая проблема с пакетным импортом в OrientDB, когда я использую Java.
Мои данные - это набор записей ID и токенов.Для каждого идентификатора существует набор токенов, но токены могут быть в нескольких идентификаторах.
Пример:
Идентификаторы
1 2,3,4
2 3,5,7
3 1,2,4
Мой граф должен иметь два типа вершин: rIDClass
и tokenClass
.Я хочу дать каждой вершине ID, соответствующий идентификатору записи и токену.Таким образом, общее количество вершин tokenClass должно быть общим количеством уникальных токенов в данных.(Каждый токен создается только один раз!)
Как я могу решить эту проблему?Я попробовал «Пользовательскую пакетную вставку» из исходной документации и попробовал метод «Пакетная реализация», описанный в документации чертежей.
Проблема первого метода заключается в том, что OrientDB создает для каждого вставленного токена отдельныйвершина с пользовательским идентификатором, который устанавливается самой системой.
Проблема второго метода заключается в том, что когда я пытаюсь добавить вершину в пакетный график, я не могу установить соответствующий класс вершины и, кроме того, получаюисключение.Это мой код из второго метода:
BatchGraph<OrientGraph> bgraph = new BatchGraph<OrientGraph>(graph, VertexIDType.STRING, 1);
Vertex vertex1 = bgraph.addVertex(1);
vertex1.setProperty("uid", 1);
Может быть, у кого-то есть решение.
Vertex vertex2 = bgraph.addVertex(2);
vertex2.setProperty("uid", 2);
Edge edge1 = graph.addEdge(12, vertex1 , vertex2, "EdgeConnectClass");
И я получаю следующее исключение:
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)