我当前正在查询OrderItem sObject,并且试图将查询中的值分成单独的变量。我执行查询,遇到两个问题。
尽管系统调试显示了特定字段的值,但我尝试执行get并将值放入变量中,但最终以null值结束。在某些情况下,如果有多个订单项,则返回的OrderItemNumber会超过1,其他值也会返回。
我似乎无法将下面代码中的列表中的值传递给另一个列表。
执行系统调试时,列表中的某些值不会打印。例如,如果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
]);
答案 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
,只是根本不打印属性:/