LoginSignup
1
1

More than 5 years have passed since last update.

Lightningでupsertを使う

Last updated at Posted at 2018-02-15
  • List<SObject>はupsertできない
  • Lightningでレコードリストを引数としてApexに渡すと、型宣言がList<Account>やList<Contact>であったとしても実体はList<SObject>になっている
  • つまり、そのままだとLightningコンポーネントからApexにレコードリストを渡してもupsertできない

public class MyComponentController {
    @AuraEnabled
    public static void saveRecords(List<Account> records) {
        upsert records;
        //=> System.TypeException: DML on generic List<SObject> only allowed for insert, update or delete
    }
}

  • しかし、List<Account>やList<Contact>を新たに生成してaddAllすることでupsert可能なリストを生成することはできる。

public class MyComponentController {
    @AuraEnabled
    public static void saveRecords(List<Account> records) {
        List<Account> recordsToUpsert = new List<Account>();
        recordsToUpsert.addAll(records);
        upsert recordsToUpsert;
    }
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1