我正在使用带有Java API的OrientDB。 我有这个警告,我不明白为什么:
命令'create vertex type'Users'作为'V'的子类'必须在活动事务之外执行:事务将在其之后提交并重新打开。要避免此行为,请在事务外部执行
我的Java代码是:
OrientGraph graph = new OrientGraphFactory(databaseUrl).getTx();
graph.createVertexType(User.CLASS_NAME);
graph.createKeyIndex(User.MAIL_KEY, Vertex.class, new Parameter<>("type", "UNIQUE"),new Parameter<>("class", User.CLASS_NAME));
graph.commit();
graph.shutdown();
答案 0 :(得分:3)
解决方案是使用与数据库的无事务连接。你的第一行应该是:
OrientGraphNoTx graph = new OrientGraphFactory(databaseUrl).getNoTx();
OrientGraphNoTx对象支持与OrientGraph相同的方法来创建顶点,边和类型。请注意,您向此对象发出的命令不会成为事务的一部分,并且会立即提交(因此您不需要提交的行。但仍需要关闭)。我建议你实现一种在启动时创建所需顶点和边缘类型的方法,这样就不会干扰正常操作。