4

我正在使用带有 Java API 的 OrientDB。我有这个警告,但我不明白为什么:

命令'create vertex type 'Users' as subclass of '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();
4

1 回答 1

3

解决方案是使用与数据库的无事务连接。你的第一行应该是:

OrientGraphNoTx graph = new OrientGraphFactory(databaseUrl).getNoTx();

OrientGraphNoTx 对象支持与 OrientGraph 相同的创建顶点、边和类型的方法。请注意,您对该对象发出的命令不会成为事务的一部分,并且会立即提交(因此您不需要提交的行。但仍然需要关闭)。我建议您实现一种在启动期间创建所需的顶点和边类型的方法,这样它就不会干扰正常操作。

于 2015-12-25T21:32:07.897 回答