gpt4 book ai didi

java - JCR (JackRabbit) 查询返回空结果

转载 作者:行者123 更新时间:2023-12-01 11:11:02 26 4
gpt4 key购买 nike

我正在将 Magnolia 用于我的一个项目,并在其中创建了一个 REST 端点。其余端点将从我的自定义工作区读取节点并将结果返回给客户端。非常简单。

如果我在 Magnolia JCR Utils 查询应用程序中运行以下查询,它工作正常并返回正确的结果。

SELECT * FROM [mgnl:contentIndex]

下面是截图

http://s1.postimg.org/gl59arw2n/correct_result.png

如果我在 REST ENDPOINT 处理程序中运行以下代码,它将返回空结果集。

    // Get JCR session for "dinnacoDriven" workspace
try {
Session session = MgnlContext.getJCRSession("dinnacoDriven");
StringBuilder queryBuilder = new StringBuilder("SELECT * FROM [mgnl:contentIndex]");
System.out.println(queryBuilder.toString());
Query query = session.getWorkspace().getQueryManager().createQuery(queryBuilder.toString(), Query.JCR_SQL2);
List<String> suggestions = new ArrayList<String>();
NodeIterator iterator = query.execute().getNodes();
while(iterator.hasNext()) {
System.out.println("next node");
Node node = iterator.nextNode();
suggestions.add(node.getProperty("title").getString());
}
return suggestions;
} catch(RepositoryException ex) {
throw new ServiceException("Internal Server Error", ex);
}

我可以在日志中看到 System.out.println(queryString.toString()); 将打印与我在上面运行的完全相同的查询,但下一个节点 永远不会被打印出来。它返回空结果。

自从我试图找出这段代码有什么问题以来,已经过去了 12 个小时,但我找不到任何东西。

我的代码有什么问题?为什么它返回空结果集?

编辑:添加一些附加信息。当我通过代码访问时,我没有登录。我正在匿名访问。

contentIndex 节点存储在根节点 contentIndex 下的 dinnacoDriven 工作区中。

更多信息,我将dinnacoDriven工作区导出为xml,这是xml文件

https://gist.github.com/riteshsangwan/efe93ee4c5077236c0c0

最佳答案

没有足够的数据,所以只是大胆猜测:在管理中心执行查询时,您已登录并有权访问节点。针对 REST 端点运行时,您尚未登录,并且匿名用户没有分配对 dinnacoDriven 工作区的访问权限。

HTH,
一月

关于java - JCR (JackRabbit) 查询返回空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32371303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com