OrientDB - OrientDB函数不使用Java执行

时间:2015-04-21 07:52:58

标签: java javascript orientdb

我有一个具有以下Javascript功能的数据库。但是当我尝试使用Java执行相同的功能时,它并不起作用。 enter image description here

我尝试使用此Java代码进行连接:

ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/localDBDocumentAPI").open("admin", "admin");
OFunction func = db.getMetadata().getFunctionLibrary().getFunction("CreateLinks");
func.execute();

当我运行Java代码时,它运行时没有任何错误。但没有结果。

2 个答案:

答案 0 :(得分:4)

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>

请参阅OrientDB note

答案 1 :(得分:0)

上面的代码应该有用。Orientdb doc中给出了相同的例子,但无法正常工作。

工作的那个:

ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/test").open("admin", "admin");
Integer result = db.command(new OCommandFunction("testfunc")).execute(1,2);

可以通过命令执行功能。如上面的代码所示。