我正在尝试将一个节点及其子节点移动到 JCR 存储库中的另一个节点,但我不断收到此错误:
在工作区“默认”中找不到节点“/A/B[2]”允许同名同级的节点定义。
如果我理解正确,它试图告诉我我正在尝试在目标路径中创建一个节点,其 ID 已经存在于那里。但事实并非如此!
我的结构由两个父母组成,每个父母都有一个孩子:
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;
}
});
}
谢谢你的建议!