【Apex】関連オブジェクトのupdate。別にselectし直さなくても良い。

Salesforce

分かりづらいタイトルですが・

Apex処理であるオブジェクトを更新して、そのオブジェクトに関連している(参照関係 or 主従関係)オブジェクトもついでに更新するという場面はけっこうあると思います。

具体的に以下、取引先責任者と取引先の例です。

上記例だと取引先責任者を更新した後、関連する取引先をselectしています(ハイライトの部分)。これを、別にselectしなくてもいけるよというのがタイトルで言いたかったことになります。

まあ自分メモなので・・

具体的にどのように書けば良いかというと

後半ゴチャっとしてしまいました。取引先責任者と取引先の例はよくなかったですね・・

とりあえずハイライトした部分、取引先のインスタンスを生成してIdを設定してあげれば、updateできます。更新したい項目のみ値を設定してあげることで、設定していない項目は更新されません。

最大のメリットはSOQLの発行回数を減らせるということですね。煩雑な処理になってくるとSOQL発行回数(ガバナ制限)にも気を付けないといけないので。

ちなみになんで後半ゴチャっとしてしまったかというと、例えば書きのようにシンプルに書くと

こんなエラーで落ちる可能性があります。

System.ListException: Duplicate id in list: XXXXXXXXXXXXXXXXXX

Listクラスにオブジェクトを格納する際、おなじIdのレコードは入れられないみたいです。
そのためMapで重複がないようにしたのでした。

何気に分かっていなかったので、副産物的な発見でした。

コメント

タイトルとURLをコピーしました