通过 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()
但在这种情况下,数据库实例必须附加到线程(在函数调用之前创建的数据库连接对象)
我正在尝试通过 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()
但在这种情况下,数据库实例必须附加到线程(在函数调用之前创建的数据库连接对象)