OrientDB - OrientDB 函数未使用 Java 执行
OrientDB - OrientDB function not executing using Java
我有一个具有以下 Java 脚本函数的数据库。但是当我尝试使用 Java 执行相同的功能时,它不起作用。
我正在尝试使用此 Java 代码进行连接:
ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/localDBDocumentAPI").open("admin", "admin");
OFunction func = db.getMetadata().getFunctionLibrary().getFunction("CreateLinks");
func.execute();
当我 运行 Java 代码时,它 运行 没有任何错误。但是没有结果。
String URL = "remote:localhost/localDBDocumentAPI";
String functionName = "funfun";
try (ODatabaseDocumentTx db = new ODatabaseDocumentTx(URL)) {
db.open("admin", "admin");
OFunction f = new OFunction();
f.setName(functionName);
f.setLanguage("javascript");
f.setParameters(new ArrayList());
f.setCode("print(\"hellooo\n\");");
f.save();
}
try (ODatabaseDocumentTx db = new ODatabaseDocumentTx(URL)) {
db.open("admin", "admin");
OFunction f = db.getMetadata().getFunctionLibrary().getFunction(functionName);
f.execute();
}
try (ODatabaseDocumentTx db = new ODatabaseDocumentTx(URL)) {
db.open("admin", "admin");
OFunction f = db.getMetadata().getFunctionLibrary().getFunction(functionName);
db.command(new OCommandScript("javascript", f.getCode())).execute();
}
您可以看到第一个是在客户端执行的,第二个是在服务器端执行的(我相信这是您的意图)。
尽管要实现这一点,您必须更改 $ODB_HOME/orientdb-server-config.xml 以允许 javascript在服务器端 运行。
我的看起来像这样:
<handler class="com.orientechnologies.orient.server.handler.OServerSideScriptInterpreter">
<parameters>
<parameter value="true" name="enabled"/>
<parameter value="SQL" name="allowedLanguages"/>
<parameter value="javascript" name="allowedLanguages"/>
</parameters>
</handler>
上面的代码应该有 worked.The 相同的例子已经在 Orientdb doc 中给出了但是不能工作。
有效的那个:
ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/test").open("admin", "admin");
Integer result = db.command(new OCommandFunction("testfunc")).execute(1,2);
函数可以通过上面代码中的command.Its来执行。
我有一个具有以下 Java 脚本函数的数据库。但是当我尝试使用 Java 执行相同的功能时,它不起作用。
我正在尝试使用此 Java 代码进行连接:
ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/localDBDocumentAPI").open("admin", "admin");
OFunction func = db.getMetadata().getFunctionLibrary().getFunction("CreateLinks");
func.execute();
当我 运行 Java 代码时,它 运行 没有任何错误。但是没有结果。
String URL = "remote:localhost/localDBDocumentAPI";
String functionName = "funfun";
try (ODatabaseDocumentTx db = new ODatabaseDocumentTx(URL)) {
db.open("admin", "admin");
OFunction f = new OFunction();
f.setName(functionName);
f.setLanguage("javascript");
f.setParameters(new ArrayList());
f.setCode("print(\"hellooo\n\");");
f.save();
}
try (ODatabaseDocumentTx db = new ODatabaseDocumentTx(URL)) {
db.open("admin", "admin");
OFunction f = db.getMetadata().getFunctionLibrary().getFunction(functionName);
f.execute();
}
try (ODatabaseDocumentTx db = new ODatabaseDocumentTx(URL)) {
db.open("admin", "admin");
OFunction f = db.getMetadata().getFunctionLibrary().getFunction(functionName);
db.command(new OCommandScript("javascript", f.getCode())).execute();
}
您可以看到第一个是在客户端执行的,第二个是在服务器端执行的(我相信这是您的意图)。 尽管要实现这一点,您必须更改 $ODB_HOME/orientdb-server-config.xml 以允许 javascript在服务器端 运行。
我的看起来像这样:
<handler class="com.orientechnologies.orient.server.handler.OServerSideScriptInterpreter">
<parameters>
<parameter value="true" name="enabled"/>
<parameter value="SQL" name="allowedLanguages"/>
<parameter value="javascript" name="allowedLanguages"/>
</parameters>
</handler>
上面的代码应该有 worked.The 相同的例子已经在 Orientdb doc 中给出了但是不能工作。
有效的那个:
ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/test").open("admin", "admin");
Integer result = db.command(new OCommandFunction("testfunc")).execute(1,2);
函数可以通过上面代码中的command.Its来执行。