无法在触发器查询中使用查询中的ContentDocument id进行过滤,而无法检索任何结果

时间:2018-02-08 20:16:22

标签: salesforce apex

我要求将文件设为私有,并且只对其角色名称包含特定自定义对象的文件名的用户可用。为此,我试图从内容文档链接检索自定义对象名称LinkedEntity.Type和ContentDocumentid作为过滤器,当我硬编码ContentDocumentid它工作正常,但当我尝试动态提供ContentDocumentId然后查询不返回任何结果。我正在添加我的代码片段。请帮忙!!。感谢

List<Id> listOfConDocuId = new List<Id>();
for(ContentVersion cv: Trigger.new){
    if((!cv.Title.contains('product proposal')) || (!cv.Title.contains('final')) || (!cv.Title.contains('packet')))
        listOfConDocuId.add(cv.ContentDocumentId);
}

Map<Id, Project__c> mapOfProjectId = new Map<Id, Project__c>([SELECT Id FROM Project__c]);

Set<Id> setOfProjectId = mapOfProjectId.keySet();

List<ContentDocumentLink> LinkedProject = [SELECT ContentDocumentId, LinkedEntityId, ContentDocument.Title FROM ContentDocumentLink where LinkedEntityId in :setOfProjectId and LinkedEntity.Type='Project__c' and ContentDocumentId IN :listOfConDocuId];`

1 个答案:

答案 0 :(得分:0)

我认为没有必要为ID和TYPE添加WHERE子句。我应该够了。至于仅将文件限制为具有特定角色的用户,您是否尝试仅与这些用户共享自定义对象(Project__c),然后只是将文件链接到具有推断权限的自定义对象记录?

在此处详细了解内容文档链接的共享类型和可见性: https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_contentdocumentlink.htm