首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OrientDB - OrientDB函数不使用Java执行

OrientDB - OrientDB函数不使用Java执行
EN

Stack Overflow用户
提问于 2015-04-21 07:52:57
回答 2查看 639关注 0票数 1

我有一个具有以下Javascript函数的数据库。但是,当我试图使用Java执行相同的函数时,它不起作用。

我试着用这个Java代码连接:

代码语言:javascript
复制
ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/localDBDocumentAPI").open("admin", "admin");
OFunction func = db.getMetadata().getFunctionLibrary().getFunction("CreateLinks");
func.execute();

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-21 09:48:52

代码语言:javascript
复制
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

我的看起来是这样的:

代码语言: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注记

票数 4
EN

Stack Overflow用户

发布于 2015-12-18 08:35:59

上面的代码应该具有worked.The,与Orientdb医生中给出的示例相同,但无法工作。

起作用的是:

代码语言:javascript
复制
ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/test").open("admin", "admin");
Integer result = db.command(new OCommandFunction("testfunc")).execute(1,2);

函数可以通过上述代码中所示的command.Its执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29766114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档