通过 java API 从 orientdb 调用 JS 函数

calling JS function from orientdb through java API

我正在尝试通过 OrientDB Java API 从 Java 调用存储在 OrientDB 中的自定义 JS 函数。

我可以使用studio里面的功能,而且效果和预期的一样。

这是用于连接到数据库并获取函数的代码:

OrientGraphFactory factory = new OrientGraphFactory(SERVER_URL, "user", "pass");
OrientGraph txGraph = factory.getTx();
OFunction functionObject = txGraph.getRawGraph().getMetadata()
.getFunctionLibrary().getFunction("functionName");

问题是返回的 functionObject 是空的,检查 getFunctionLibrary() 结果,我可以看到函数列表是空的。

知道我做错了什么吗?

使用官方 Documentation 示例,给出相同的空结果。

LE:对于遇到此问题的任何人,完整的工作代码是:

OrientGraphFactory factory = new OrientGraphFactory(SERVER_URL, "user", "pass");
OrientGraph txGraph = factory.getTx();
Double response = (Double) txGraph.command(new OCommandFunction("functionName")).execute(functionParameter);

其中 response 是函数给出的结果,functionParameter 是我传递给函数的参数。

这仅适用于 java 函数(文档中的示例是正确的,因为它检索 java 函数)。 为了执行 js/sql/whatever 函数,请使用 OCommandFunction。像这样:

txGraph.command(new OCommandFunction("functionName")).execute()

可能它也可以直接工作(如果你不需要将结果转换为图形对象)

new OCommandFunction("functionName").execute()

但在这种情况下,数据库实例必须附加到线程(在函数调用之前创建的数据库连接对象)