如何使用 DQL 递归删除文件夹?
How do I delete folders recursively using DQL?
我使用 Documentum 开发应用程序。
假设我有以下结构:
MyCabinetName
|->Folder 1
|->Folder 2
|-> Folder 3
我正在尝试删除文件柜中的所有文件夹。
我运行正在执行以下 DQL 查询:
delete dm_folder objects where folder ('MyCabinetName', DESCEND);
但是当我 运行 查询时,我得到一个 DQL 错误:
[DM_FOLDER_E_CANT_DESTROY]error : "Cannot destroy folder with path name /MyCabinetName/Folder1 as it is not empty
我原以为我的查询会递归删除 MyCabinetName 中的所有文件夹,但事实并非如此,因为如果我 运行 :
delete dm_folder objects where folder ('MyCabinetName/Folder1/Folder2', DESCEND);
然后是
delete dm_folder objects where folder ('MyCabinetName/Folder1', DESCEND);
delete dm_folder objects where folder ('MyCabinetName/Folder3', DESCEND);
然后
delete dm_folder objects where folder ('MyCabinetName', DESCEND);
会起作用。
问题是在现实生活中,我不知道我的文件夹树是什么样的。我只知道要删除内容的柜子名称
有什么方法可以递归删除一个柜子及其内容,而不必一个一个地删除一个文件夹?
无法通过 DQL 删除具有深层文件夹结构的文件夹。
但是你可以通过删除操作,也就是说你可以在Java,Groovy,...[=12中写一个工具=]
这是一个如何做到这一点的例子:
IDfDeleteOperation operation = new DfClientX().getDeleteOperation();
operation.setVersionDeletionPolicy(IDfDeleteOperation.ALL_VERSIONS);
operation.setDeepFolders(true);
operation.add("/MyCabinetName");
if (!operation.execute()) {
IDfList errors = operation.getErrors();
// process errors
}
这一行operation.setDeepFolders(true)
指示删除结构中包含的文件夹及其所有子文件夹和其他对象的操作。
我使用 Documentum 开发应用程序。 假设我有以下结构:
MyCabinetName
|->Folder 1
|->Folder 2
|-> Folder 3
我正在尝试删除文件柜中的所有文件夹。
我运行正在执行以下 DQL 查询:
delete dm_folder objects where folder ('MyCabinetName', DESCEND);
但是当我 运行 查询时,我得到一个 DQL 错误:
[DM_FOLDER_E_CANT_DESTROY]error : "Cannot destroy folder with path name /MyCabinetName/Folder1 as it is not empty
我原以为我的查询会递归删除 MyCabinetName 中的所有文件夹,但事实并非如此,因为如果我 运行 :
delete dm_folder objects where folder ('MyCabinetName/Folder1/Folder2', DESCEND);
然后是
delete dm_folder objects where folder ('MyCabinetName/Folder1', DESCEND);
delete dm_folder objects where folder ('MyCabinetName/Folder3', DESCEND);
然后
delete dm_folder objects where folder ('MyCabinetName', DESCEND);
会起作用。
问题是在现实生活中,我不知道我的文件夹树是什么样的。我只知道要删除内容的柜子名称
有什么方法可以递归删除一个柜子及其内容,而不必一个一个地删除一个文件夹?
无法通过 DQL 删除具有深层文件夹结构的文件夹。
但是你可以通过删除操作,也就是说你可以在Java,Groovy,...[=12中写一个工具=]
这是一个如何做到这一点的例子:
IDfDeleteOperation operation = new DfClientX().getDeleteOperation();
operation.setVersionDeletionPolicy(IDfDeleteOperation.ALL_VERSIONS);
operation.setDeepFolders(true);
operation.add("/MyCabinetName");
if (!operation.execute()) {
IDfList errors = operation.getErrors();
// process errors
}
这一行operation.setDeepFolders(true)
指示删除结构中包含的文件夹及其所有子文件夹和其他对象的操作。