Newer Version Available
sObjects のリスト
リストを使用して、sObject を保存できます。リストは、SOQL クエリを使用するときに便利です。SOQL クエリは sObject データを返し、このデータを sObject のリストに保存できます。また、1 回のコールでの sObject のリストの挿入など、一括処理の実行にリストを使用することもできます。
sObject のリストを宣言するには、<> 文字で囲まれた sObject 型の前に List キーワードを使用します。次に例を示します。
SOQL クエリによるリストの自動入力
List 変数を SOQL クエリの結果に直接割り当てることができます。SOQL クエリは、返されたレコードが入力された新しいリストを返します。宣言された List 変数に、照会されるものと同じ sObject が含まれていることを確認してください。または、汎用 sObject データ型を使用することもできます。
この例では、取引先のリストを宣言して SOQL クエリの戻り値に割り当てる方法を示します。このクエリは、Id 項目と Name 項目を含む最大 1,000 個の取引先レコードを返します。
リスト要素の追加と取得
プリミティブデータ型のリスト同様、Apex で提供される List メソッドを使用して、sObject リストの要素にアクセスして設定できます。次に例を示します。
一括処理
レコード ID の生成
Apex は、DML を使用して挿入または更新/挿入された sObject リストのオブジェクトごとに ID を自動的に生成します。したがって、sObjects の複数のインスタンスがリストに含まれる場合、その ID が null であっても、リストを挿入または更新/挿入できません。この場合、2 つの ID がメモリ内の同じ構造に書き込まれなければならないことになり、これは不正処理となります。
たとえば、次のコードブロックの insert ステートメントは、同じ sObject (a) への 2 つの参照が含まれるリストを挿入しようとするため、ListException を生成します。
sObject の一次元リストの配列表記の使用
または、配列表記 (角括弧) を使用して、sObject のリストを宣言して参照することもできます。
次の例では、sObject リストで配列表記も使用します。
| 例 | 説明 |
|---|---|
|
|
要素のない取引先リストを定義します。 |
|
|
3 つの取引先にメモリが割り当てられた取引先リストを定義します。最初の位置に新しい取引先オブジェクト、2 番目の位置に null、3 番目の位置に別の新しい取引先オブジェクトが割り当てられます。 |
|
|
新しいリストで取引先責任者リストを定義します。 |