我更关心的是为什么[]
当你知道交叉引用 ID 有一个值并且如果错误消息刚刚发出 ID 时,这个错误的 ID 值通常为空,你会知道 SObject 是什么根本原因,为您的生活赢得宝贵的分钟/小时。
这是一个例子:
- OWD 私人开启
Account
Order
由父母控制- 正在运行的用户配置文件具有 Modify All、View All on
Account
和 View All onOrder
。运行用户可以通过 UI 查看订单。Modify All
即使使用 也不会级联到 OrderControlled by parent
。 - Apex 代码尝试在
Order_Detail__c
下面插入自定义对象(不是主从)Order
,为查找字段提供值Order_Detail__c.Order__c
现在,因为没有共享规则将 r/w 扩展到有问题的订单帐户,所以没有对订单的 r/w 访问权限,因此在尝试将子记录分配给父订单时会发生INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY
,错误。insufficient access rights on cross-reference id: []
我不明白的是为什么字段Order_Detail__c.Order__c
查找字段的 ID 值没有在[]
. 为什么括号还在那里?
我想这是一个安全项目,不暴露 ID 值可以避免告诉犯罪分子,即使 SObject 无法访问。如果错误消息只显示前三个字符或转换为 sobjectType,我会很高兴。的含义[]
是一个空数组。但这不是您的代码中发生的事情。
这个假设正确吗?
对于为正在运行的用户捕获调试日志然后必须通过演绎逻辑的壮举来确定哪个相关的对象(有问题的对象上可能有多个查找字段)是问题的 sysad 来说,这肯定会让生活变得困难。 ,更别说为什么了。