原因 - 插入失败。第1行的第一个例外;第一个错误:INVALID_CROSS_REFERENCE_KEY,无效的交叉引用ID:

问题描述 投票:0回答:1

我正在创建OrderItem记录并获取错误,交叉引用标识:

原因 - 插入失败。第1行的第一个例外;第一个错误:INVALID_CROSS_REFERENCE_KEY,无效的交叉引用ID:

有关此参考的任何帮助吗?

public class OrderItemCreate {

  public static void createOrderLine() {

    List<PriceBookEntry> priceBookList = new List<PriceBookEntry> ([SELECT Id, Pricebook2Id FROM PriceBookEntry]);

    Set<Id> priceBookSet = new Set<Id>();
    for (PriceBookEntry pb: priceBookList) {
      priceBookSet.add(pb.Pricebook2Id);
    }

    List<OrderItem> orderItemList = new List<OrderItem>();
    List<Order> orderList = new List< Order>([SELECT id FROM Order WHERE PriceBook2Id IN: priceBookSet]);

    for (Integer i = 1; i <= 5; i++) {
      OrderItem temp = new OrderItem();
      temp.PricebookEntryId = priceBookList.get(Math.mod(i, 2)).id;
      temp.OrderId = orderList.get(Math.mod(i, 2)).Id;
      temp.UnitPrice = 100;
      temp.Quantity = 1;
      orderItemList.add(temp);
    }

    if (orderItemList.size() > 0)
      insert orderItemList;
  }
}
salesforce apex
1个回答
0
投票

这一行:temp.PricebookEntryId = priceBookList.get(Math.mod(i,2))。id;

应该是:temp.PricebookEntryId = priceBookSet.get(Math.mod(i,2))。id;

您试图将PriceBookEntry标识放入PriceBookId字段。

我建议你将变量PriceBookList重命名为PriceBookEntryList。

© www.soinside.com 2019 - 2024. All rights reserved.