先日、Apexの開発中に次のようなエラーに出くわしました。
System.QueryException: List has no rows for assignment to SObject
QueryExceptionということで、Apex内で発行したSOQLに何か問題があったようです。
Account acc = [Select Id, Name From Account Where Name LIKE 'テスト取引先%'];
書いていたSOQLは、上記のようなもの。
条件句に取引先の名前を指定して、取引先を取得しています。
ここで問題だったのが、SOQLの取得結果が1件のみの想定で変数を用意していたことです。
なので、SOQLで返される結果が2件以上、さらには0件の場合もエラーになってしまいます。
ちなみに私の場合は、取得結果が0件だったために発生したエラーでした。
Account型のaccに取得結果を格納するのであれば、必ず1件なければならないということですね。
これは盲点でした。
対応策としては、以下ように配列に格納することです。
List<Account> accList = [Select Id, Name From Account Where Name LIKE 'テスト取引先%'];
これで、取得結果が複数でも0件でも大丈夫です。
コメント