我已经向jackrabbit用户列表发送了相同的消息,但没有人回复我。
我想用Jackrabbit 2.4.3 throw jackrabbit-jcr2dav更新节点和他的孩子。 (比如合并:更新,创建或删除节点)。
但是当我更新存储库中已存在的属性时,我在日志中有一个ERROR,并且没有保存任何内容。这不是一个例外,只是一个错误。
[错误] org.apache.jackrabbit.jcr2spi.hierarchy.ChildNodeEntriesImpl:176 - ChildInfo迭代器包含多个具有相同名称的条目| index或uniqueID - >忽略ChildNodeInfo。
我的代码:
Repository repository = JcrUtils.getRepository(jcrUrl); 会话会话= repository.login(新的SimpleCredentials(“admin”,“admin”.toCharArray()));
try {
String user = session.getUserID();
String repositoryname = repository.getDescriptor(Repository.REP_NAME_DESC);
LOGGER.debug( "Logged in as " + user + " to a " + repositoryname + " repository.");
// Retrieve content
StringBuilder expression = new StringBuilder();
expression.append("SELECT * FROM [nt:unstructured] AS mynode ");
expression.append("WHERE id = "+ mynode.getId() +" " );
QueryManager queryMgr = session.getWorkspace().getQueryManager();
Query query = queryMgr.createQuery(expression.toString(),Query.JCR_SQL2);
QueryResult result = query.execute();
RowIterator rowIterator = result.getRows();
if (rowIterator.hasNext() ) {
Node node = rowIterator.nextRow().getNode();
// Store metadata content
node.setProperty("description", mynode.getDescription());
node.setProperty("keywords", mynode.getKeywords());
node.setProperty("title", mynode.getTitle()); // ERROR IN THE LOG AT THIS LINE because description and keywords doesn't exist, but title already exist.
node.setProperty("resume", mynode.getResume());
[... updating childs node here ]
session.save();
}
} catch ( RepositoryException e) {
LOGGER.error("Error getting data", e);
throw e;
} finally {
session.logout();
}
return book;
}
是否有人已尝试更新节点属性?
由于
答案 0 :(得分:0)
最后,我确认同一父级下的两个节点应注意具有相同的名称。这就是我有这个错误的原因。 没有相同的名称,我的代码正在运作。