2012-12-03 43 views
3

我已經將相同的消息發送到jackrabbit用戶列表,但沒有人回覆我。Jackrabbit更新或合併節點

我想用Jackrabbit 2.4.3 throw jackrabbit-jcr2dav來更新節點和他的孩子。 (如合併:更新,創建或刪除節點)。

但是,當我更新存儲庫中已有的屬性時,我在日誌中有一個錯誤,並且沒有保存。這不是一個例外,只是一個錯誤。

[錯誤] org.apache.jackrabbit.jcr2spi.hierarchy.ChildNodeEntriesImpl:176 - ChildInfo迭代器包含多個具有相同名稱索引或uniqueID的條目 - 忽略ChildNodeInfo。

我的代碼:

庫庫= JcrUtils.getRepository(jcrUrl); Session session = repository.login(new 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; 
} 

有人已經嘗試更新節點屬性嗎?

感謝

+1

錯誤不是直接明顯的。我會測試以下幾件事:在第一個節點上發生錯誤?當您使用另一種查詢類型選擇節點時發生此錯誤。也許這個方法的評論給你更多的信息:http://grepcode.com/file/repo1.maven.org/maven2/org.apache.jackrabbit/jackrabbit-jcr2spi/2.5.2/org/apache/jackrabbit/jcr2spi /hierarchy/ChildNodeEntriesImpl.java#ChildNodeEntriesImpl.update%28java.util.Iterator%29 – dataverse

回答

0

最後,我必須確認同一父下的兩個節點應該注意具有相同的名稱。這就是爲什麼我有這個錯誤。 沒有相同的名稱,我的代碼正在工作。