System.SObjectException报错求助:未查询Asset.Product2对象
解决System.SObjectException: SObject行通过SOQL检索,但未查询请求的字段:Asset.Product2错误
错误原因
你的代码里直接访问了Asset.Product2这个关联SObject对象,但当前SOQL只查询了Product2Id或AssetId__r.Product2Id这类ID字段——Salesforce要求,若要访问关联对象本身(比如Asset.Product2.Name这种操作),必须在SOQL中明确查询该关联对象的引用,而非仅查询ID字段。
解决方案
根据你的查询场景调整SOQL:
- 若直接查询Asset记录:
在SOQL中加入Product2关联对象的引用(可指定具体需要的字段,避免查询所有字段影响性能),示例:
若仅需关联对象本身(不指定具体字段),至少要写SELECT Id, Product2Id, Product2.Name, Product2.Description FROM Asset WHERE ...Product2:SELECT Id, Product2 FROM Asset WHERE ... - 若从自定义对象关联查询Asset:
需要在查询中嵌套AssetId__r.Product2(或其下具体字段),示例:SELECT Id, AssetId__r.Id, AssetId__r.Product2.Name FROM YourCustomObject__c WHERE ...
注意事项
- 若代码仅需Product2的ID,直接用
Asset.Product2Id替代Asset.Product2.Id,此时仅查询Product2Id字段即可。 - 不要用
SELECT ... Product2.* ...这种写法,明确指定需要的字段更符合Salesforce最佳实践。
内容的提问来源于stack exchange,提问作者koffyone
相关产品推荐
相关产品推荐

