ich einen Knoten in Hasen session.getWorkspace().copy(sourceNode.getPath(), destinationNode.getPath())
Node Identifier des kopierten Knoten in Hasen nicht gefunden beim Löschen
Dieser Vorgang Änderungen beibehalten werden sofort soweit ich weiß mit kopiert. Aber als ich versuchte, den kopierten Knoten zum Löschen mit session.getNodeByIdentifier("nodeId of copied node")
zu bekommen, gibt es ItemNotFoundException. Der Grund für diesen Fehler ist, dass der kopierte Knoten während der Kopie die Eigenschaft mix:referenceable
verliert, wodurch getNodeByIdentifier fehlschlägt.
Die Frage ist, wie setze ich die mix:referenceable
Eigenschaft zu kopierten Knoten, da ich nicht in der Lage bin, den Knoten von Sitzung nach Kopiervorgang zu erhalten. Könnte mir jemand dabei helfen?
UPDATE:
CODE:
Node srcNode = session.getNodeByIdentifier("SOURCE_NODE_ID");
if(srcNode == null) {
System.out.println("File not found");
}
Node rootNode = session.getRootNode();
Node appNode = rootNode.getNode("JACKRABBIT");
Node destNode = appNode.addNode("Copy_Test_"+System.currentTimeMillis(),"nt:file");
session.getWorkspace().copy(srcNode.getPath(),destNode.getPath());
destNode.addMixin(MIX_VERSIONABLE);
destNode.addMixin(MIX_LOCKABLE);
destNode.addMixin(MIX_REFERENCEABLE);
destNode.addNode(DMSConstants.RESOURCE_NODE,"nt:unstructured");
session.refresh(true);
session.save();
EXCEPTION:
Exception in thread "main" javax.jcr.InvalidItemStateException: Es konnte keine abgestanden Artikel aktualisieren: item.save() bei org.apache.jackrabbit.rmi.server.ServerObject.getRepositoryException (ServerO bject.java:111) bei org.apache.jackrabbit.rmi.server.ServerSession.save (ServerSession.java:265) bei sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode) bei sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) bei sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) bei java.lang.reflect.Method.invoke (Method.java:498) bei sun.rmi.server.UnicastServerRef .dispatch (UnicastServerRef.java:346) bei sun.rmi.transport.Transport $ 1.run (Transport.java:200) bei sun.rmi.transport.Transport $ 1.run (Transport.java:197) bei java .security.AccessController.doPrivileged (Native Methode) bei sun.rmi.transport.Transport.serviceCall (Transport.java:196) unter sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport.java:568) unter sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0 (TCPTransport.java:826) bei sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.lambda $ run $ 0 (TCPTransport.java:683) unter java.security.AccessController.doPrivileged (Native Methode) unter sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler. run (TCPTransport.java:682) bei java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) auf Java. lang.Thread.run (Thread.java:748) unter sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer (StreamRemoteC all.java:276) bei sun.rmi.transport.StreamRemoteCall.executeCall (StreamRemoteCall.java:253) bei sun.rmi.server.UnicastRef.invoke (UnicastRef.java:162) bei org.apache.jackrabbit. rmi.server.ServerXASession_Stub.save (Unknown Source) bei org.apache.jackrabbit.rmi.client.ClientSession.save (ClientSession.java:272)
Bitte beachten Sie, dass ich JCR bin auch mit 2.0, wenn ich Ändern Sie den Code in session.refresh(false)
, der Code funktioniert gut, aber ich bin nicht in der Lage, die Knoten-ID aus der Sitzung zum Löschen der gleichen, die mein ursprüngliches Problem ist.
Ich crackte es irgendwann zurück. Danke für die Antwort wie. – Gandhi