Java 使用modeshape递归移动JCR存储库中的节点

Java 使用modeshape递归移动JCR存储库中的节点,java,repository,nodes,jcr,modeshape,Java,Repository,Nodes,Jcr,Modeshape,我正在尝试将一个节点及其子节点移动到JCR存储库中的另一个节点,但始终出现以下错误: 在工作区“默认”中的节点“/A/B[2]”找不到允许同名同级的节点定义 如果我理解正确,它会告诉我,我正在尝试在目标路径中创建一个ID为allready的节点。但事实并非如此 我的结构由两个父母组成,每个人有一个孩子: A-->B C-->D 我试图将D移到B,这样之后的结构将是: A-->B-->D C 这是我的代码,我希望路径设置正确: private void moveNode(final Node mo

我正在尝试将一个节点及其子节点移动到JCR存储库中的另一个节点,但始终出现以下错误:

在工作区“默认”中的节点“/A/B[2]”找不到允许同名同级的节点定义

如果我理解正确,它会告诉我,我正在尝试在目标路径中创建一个ID为allready的节点。但事实并非如此

我的结构由两个父母组成,每个人有一个孩子:

A-->B

C-->D

我试图将D移到B,这样之后的结构将是:

A-->B-->D

C

这是我的代码,我希望路径设置正确:

private void moveNode(final Node movedNode, final Node destinationNode) 
    throws RepositoryException {
        System.out.println(movedNode.getPath()); // prints "/C/D"
        System.out.println(destinationNode.getPath()); // prints "/A/B"
        modeshape.execute(new JcrHandler<Object>() {
            @Override
            public Object execute(Session session) throws RepositoryException {
                session.move(movedNode.getPath(), destinationNode.getPath());
                return null;
            }

        });
}
private void moveNode(最终节点movedNode,最终节点destinationNode)
抛出RepositoryException{
System.out.println(movedNode.getPath());//prints”/C/D
System.out.println(destinationNode.getPath());//prints”/A/B
execute(新的JcrHandler(){
@凌驾
公共对象执行(会话会话)引发RepositoryException{
move(movedNode.getPath(),destinationNode.getPath());
返回null;
}
});
}

谢谢你的建议

当然路径不正确!愚蠢的我

将路径更改为此解决了问题:

session.move(movedNode.getPath(), destinationNode.getPath()+"/"+movedNode.getName());
我需要更仔细地阅读文档:

提供的destAbsPath在其最终元素上不能有索引。如果发生,则立即抛出RepositoryException。严格地说,destAbsPath参数实际上是新位置的父节点的绝对路径,附加了移动节点所需的新名称


来源:

当然路径不正确!愚蠢的我

将路径更改为此解决了问题:

session.move(movedNode.getPath(), destinationNode.getPath()+"/"+movedNode.getName());
我需要更仔细地阅读文档:

提供的destAbsPath在其最终元素上不能有索引。如果发生,则立即抛出RepositoryException。严格地说,destAbsPath参数实际上是新位置的父节点的绝对路径,附加了移动节点所需的新名称


来源:

当然路径不正确!愚蠢的我

将路径更改为此解决了问题:

session.move(movedNode.getPath(), destinationNode.getPath()+"/"+movedNode.getName());
我需要更仔细地阅读文档:

提供的destAbsPath在其最终元素上不能有索引。如果发生,则立即抛出RepositoryException。严格地说,destAbsPath参数实际上是新位置的父节点的绝对路径,附加了移动节点所需的新名称


来源:

当然路径不正确!愚蠢的我

将路径更改为此解决了问题:

session.move(movedNode.getPath(), destinationNode.getPath()+"/"+movedNode.getName());
我需要更仔细地阅读文档:

提供的destAbsPath在其最终元素上不能有索引。如果发生,则立即抛出RepositoryException。严格地说,destAbsPath参数实际上是新位置的父节点的绝对路径,附加了移动节点所需的新名称

资料来源: