将查询Map <String,sObject>值放入单独的变量或变量数组中,并打印具有空值的字段

时间:2019-11-22 00:39:07

标签: arrays apex soql

我当前正在查询OrderItem sObject,并且试图将查询中的值分成单独的变量。我执行查询,遇到两个问题。

  1. 尽管系统调试显示了特定字段的值,但我尝试执行get并将值放入变量中,但最终以null值结束。在某些情况下,如果有多个订单项,则返回的OrderItemNumber会超过1,其他值也会返回。

  2. 我似乎无法将下面代码中的列表中的值传递给另一个列表。

  3. 执行系统调试时,列表中的某些值不会打印。例如,如果ListPrice为空,则不会打印出字段名称,其后跟一个空值,也不会打印出该字段名称。

请在下面引用我的代码。

Map<String, OrderItem> order_items = new Map<String, OrderItem>([ SELECT OrderItemNumber, ListPrice, UnitPrice, TotalPrice FROM OrderItem WHERE Order.OrderNumber = :order_number // holds the order number of // the Order sObject that // the query is being // performed for ]);

1 个答案:

答案 0 :(得分:0)

1-发生这种情况的可能是因为Map中的键将是OrderItem记录ID,而不是OrderItemNumber,因为我怀疑您的实际身份。如果您想通过OrderItem从地图中查找OrderItemNumber条记录,则需要将其更改为:

Map<String, OrderItem> order_items = new Map<String, OrderItem>();

for(OrderItem oi : [SELECT OrderItemNumber, ListPrice, UnitPrice, TotalPrice FROM OrderItem WHERE Order.OrderNumber = :order_number]) {
    order_items.put(oi.OrderItemNumber, oi);
}

//Now you can get a specific OrderItem:
OrderItem o = order_items.get(<your-order-item-number>);

2-您可以通过在该地图上调用order_items.values()来获取OrderItems列表。

3-这只是尝试进行调试时的默认Salesforce行为,它没有在调试日志中放入null,只是根本不打印属性:/