You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Salesforce中SOQL查询Lookup字段返回(null <object__r>)问题解决

问题分析与解决方案

针对你遇到的Sdf__c关联SdfBudget__c返回(null <object__r>)且调试日志无法打印关联字段的问题,以下是具体排查点和解决方法:

1. 检查Lookup字段的API名称正确性

SOQL中关联查询的__r后缀对应的是Lookup字段的API名(去掉__c后加__r)。如果你的Lookup字段API名是SdfBudget__c(而非Sdf_Budget__c),那原SOQL里的Sdf_Budget__r就是错误的,会导致关联查询失效,返回null。

修正后的SOQL:

sdfItems=[SELECT Name,VBU__c,SdfBudget__r.Budget__c FROM sdf__c WHERE VBU__c IN :vbuValues];

2. 验证Lookup字段的实际关联关系

即使VBU__c值匹配,也需要确认Sdf__c记录的Lookup字段确实指向了对应的SdfBudget__c记录:

  • 打开一条符合查询条件的Sdf__c记录,手动检查其Lookup字段(比如名为“Sdf Budget”的字段)是否已关联到存在的SdfBudget__c记录,且该SdfBudget__c的VBU__c值与Sdf__c的VBU__c完全一致(注意大小写、空格等文本细节)。

3. 正确调试关联字段

直接打印List<Sdf__c>时,Salesforce调试日志默认不会展开__r关联对象的字段。你需要改为循环打印每个记录的具体字段,或用JSON序列化查看完整数据:

// 循环打印单条记录的关联字段
for(Sdf__c item : sdfItems) {
    String budgetVal = item.SdfBudget__r != null ? item.SdfBudget__r.Budget__c : '无关联预算';
    System.debug('Sdf记录:Name=' + item.Name + ', VBU=' + item.VBU__c + ', 预算=' + budgetVal);
}

// 或用JSON序列化查看完整数据结构
System.debug('完整Sdf数据:' + JSON.serializePretty(sdfItems));

4. 优化查询逻辑(可选)

你可以合并两次查询为一次子查询,减少代码量并避免循环收集VBU值的潜在问题:

List<Sdf__c> sdfItems = [
    SELECT Name, VBU__c, SdfBudget__r.Budget__c 
    FROM Sdf__c 
    WHERE VBU__c IN (SELECT VBU__c FROM SdfBudget__c WHERE VBU__c != null)
];

内容的提问来源于stack exchange,提问作者Jilnesh Ajay Jîllu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:00:16