MarkLogic:将 Map-Object 从 Java 传递到 XQuery

我想Map<String, String>通过 MarkLogic Java API将一个简单的 Java 传递给 XQuery 脚本。该脚本已经部署到/ext服务器上的目录中,并以如下方式启动:


xquery version "1.0-ml";


declare variable $dr as xs:string external;

declare variable $en as xs:string external;

declare variable $fi as map:map external;

...

我正在使用 MarkLogic 站点上描述的模式:https ://docs.marklogic.com/guide/java/resourceservices#id_70532 (“模块调用的基本步骤”)。


我的 Java 代码如下所示:


Map<String, String> map = new HashMap<>();

map.put("key1", "value1");

map.put("key2", "value2");


ServerEvaluationCall invoker = client.newServerEval();

invoker.addVariable("dr", "foo");

invoker.addVariable("en", "bar");

invoker.addVariableAs("fi", map);

String response = invoker.evalAs(String.class);

失败,但出现以下异常:


java.lang.IllegalArgumentException: No factory for class java.util.HashMap

    at com.marklogic.client.impl.HandleFactoryRegistryImpl.makeHandle(HandleFactoryRegistryImpl.java:98) ~[marklogic-client-api-4.0.3.jar:?]

    at com.marklogic.client.impl.ServerEvaluationCallImpl.addVariableAs(ServerEvaluationCallImpl.java:123) ~[marklogic-client-api-4.0.3.jar:?]

我想我需要在将地图发送到 ML 之前对其进行转换,或者可能使用其中一个处理程序类,但我无法解决它或找不到任何示例。以前有人这样做过吗?


青春有我
浏览 180回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python