jackrabbit java_java – 如何在Apache Jackrabbit上运行查询,用例子解释

邢起运
2023-12-01

我使用Apache Jackrabbit作为数据库.

In my case, root node has numbers of child nodes(only at depth 1).

All child node has unique name, i.e., some Integer.

Each child Node have some properties that I have used further.

我的任务

我必须采取其键(整数值)最小的前10个节点.

我的想法

为了实现上述目标,我创建了一个查询,对所有子节点的键进行排序,并选择前10个.然后通过使用该键,我得到所有相应的节点,并在工作后删除所有键/值对.

为此,我在互联网上搜索了很多如何运行查询.你能告诉我如何在apache jackrabit上运行查询吗?如果你用例子解释,这很好.

编辑号1

公共类JackRabbit {

public static void main(String[] args) throws Exception {

try {

Repository repository = JcrUtils.getRepository("http://localhost:4502/crx/server");

javax.jcr.Session session = repository.login(new SimpleCredentials("admin", "admin".toCharArray()));

Node root = session.getRootNode();

// Obtain the query manager for the session via the workspace ...

javax.jcr.query.QueryManager queryManager = session.getWorkspace().getQueryManager();

// Create a query object ...

String expression = "select * from nt:base where name= '12345' ";

javax.jcr.query.Query query = queryManager.createQuery(expression, javax.jcr.query.Query.JCR_SQL2);

// Execute the query and get the results ...

javax.jcr.query.QueryResult result = query.execute();

session.logout();

} catch (Exception e) {

e.printStackTrace();

}

}

}

例外

javax.jcr.query.InvalidQueryException: Query:

select * from nt:(*)base where name= '12345'; expected:

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:525)

at org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConverter.java:69)

at org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConverter.java:51)

at org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConverter.java:45)

at org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.executeQuery(RepositoryServiceImpl.java:2004)

at org.apache.jackrabbit.jcr2spi.WorkspaceManager.executeQuery(WorkspaceManager.java:349)

at org.apache.jackrabbit.jcr2spi.query.QueryImpl.execute(QueryImpl.java:149)

at jackrabbit.JackRabbit.main(JackRabbit.java:36)

我想写一个下面的scenereo查询

这里具有整数值的节点具有一些属性.我想通过它们的整数值对这些节点进行排序,并提取前50个节点以供进一步处理.

帮助我.

 类似资料: