首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JCR importXML方法向HippoCMS抛出InvalidItemStateException

JCR importXML方法向HippoCMS抛出InvalidItemStateException
EN

Stack Overflow用户
提问于 2020-09-07 08:00:46
回答 1查看 53关注 0票数 1

我使用JCR会话接口将一个节点(JCR规范中的一个XML文件)导入到我的HippoCMS存储库中。我已经编写了使用该文件的代码,但是很难将其保存到回购程序中。异常将在下面的代码中的session.getWorkspace().importXML()行抛出。

代码语言:javascript
复制
public boolean importContent(InputStream inputStream, String path) throws JCRSessionException {
    
    try {
        session.getWorkspace().importXML(path, inputStream, IMPORT_UUID_COLLISION_REPLACE_EXISTING);
    } catch (RepositoryException e) {
        throw new JCRSessionException(JCR_REPOSITORY_ERROR, e.getMessage());
    } catch (IOException e) {       
        return false;
    }
    
    return true;
}

我要导入的节点的UUID是e33ea15d-1735-49ed-a2bc-3d18de04864d,但是当我试图导入它时,它会失败,因为InvalidItemStateException表示“Could not find child 029d9c48-5825-4d49-bb4c-2ebb94f73df4 of node e33ea15d-1735-49ed-a2bc-3d18de04864d”

我已经检查了XML文件的内容,并且那个子节点UUID不在那里,所以我不知道它来自何处。只有当指定条件IMPORT_UUID_COLLISION_REPLACE_EXISTING时,才会出现此问题。如果我在导入时创建新的UUID,它可以正常工作(尽管它创建了一个重复的节点副本)。XML文件本身似乎是有效的,因为我已经测试过通过控制台上的“importing”特性导入它,并且它成功地导入了它。任何帮助都将不胜感激。

更新:

之所以会出现这个问题,是因为在调用importContent()方法之前,我调用了一个单独的方法,该方法删除了path位置上的一个现有节点,但没有保存更改。然而,这并不是一个理想的修复方法,因为如果在importContent()期间出了问题,我希望能够回滚事务。在调用importXML方法之前,我尝试过刷新会话,但是这导致了同样的问题-- InvalidStateException

EN

回答 1

Stack Overflow用户

发布于 2020-09-07 08:56:33

很难说,但这可能是一个索引错误。我建议您运行索引一致性检查或重建索引。如果不是这样的话,也请提供完整的堆栈跟踪。

https://documentation.bloomreach.com/13/library/administration/maintenance/checking-and-fixing-index-inconsistencies.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63773552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档