实体'Lead'上没有此列“所有者”

时间:2012-08-23 01:48:49

标签: salesforce apex-code

我收到以下错误

错误:编译错误:实体'Lead'上没有此列“所有者”。如果您尝试使用自定义字段,请务必在自定义字段名称后附加“__c”。请参考您的WSDL或描述调用以获取适当的名称。在第8栏第17栏

trigger Lead_Assignment on Lead (after insert) {

     List<Lead> le=trigger.new;
     User us=le.get(0).CreatedBy;
    List<User> u=[SELECT id from USER WHERE At_Work__c=true];    
    List<integer> ii=new List<Integer>();
    for(User uu:u){
    Integer xx= [SELECT count() from Lead WHERE Owner=:uu];


    }



}

在Lead对象中有一个名为Owner的字段为什么我收到此错误,请帮助解决此错误。

1 个答案:

答案 0 :(得分:5)

我认为使用类似下面的查询会更好:

Integer xx= [SELECT count() from Lead WHERE OwnerId=:uu.Id];

主题对象上的所有者字段实际上是对所有者用户对象的引用。通常,如果您执行类似于以下的查询,则会填充此内容:

[SELECT id, Owner.Name, Owner.Email FROM Lead]

要访问所有者字段,您将访问潜在客户对象所有者属性:

Lead myLead = [SELECT Id, Owner.Name, Owner.Email FROM Lead limit 1];
System.debug(myLead.Owner.Email);

然而,这里有一个更大的问题。在这样的循环中查询不是最佳实践。最好使用聚合查询,例如:

 AggregateResult[] results = [SELECT COUNT(ID), OwnerId FROM LEAD GROUP BY OwnerId WHERE OwnerId IN :listOfUserIds]