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

时间:2019-02-27 04:36:25

标签: salesforce apex

我正在创建OrderItem记录,并得到错误和交叉引用身份:

  

原因-nsert失败。第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;
  }
}

1 个答案:

答案 0 :(得分:0)

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

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

您正试图将PriceBookEntry id放入PriceBookId字段中。

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