【Salesforce 認定Platformデベロッパー】試験対策:第81問

問題

組織には「NoContacts」という名前の単一の取引先があり、関連する取引先責任者はありません。

以下のApexを実行した結果はどうなりますか。

List<Account> accounts = [
  SELECT Name, (SELECT Id, Name FROM Contacts)
  FROM Account 
  WHERE Name = 'NoContacts'
]; 
  • QueryExceptionがスローされます。
  • accounts[0].contactsは空です。
  • accounts[0].contactsはNullです。
  • accounts[0].contactsは無効です。

正解

  • QueryExceptionがスローされます。
  • accounts[0].contactsは空です。
  • accounts[0].contactsはNullです。
  • accounts[0].contactsは無効です。

解説

それぞれの選択肢の理由について説明します。

□ QueryExceptionがスローされます。
これは不正解です。提供されたApexコードは正しいSOQLクエリを使用しており、NoContacts という名前の取引先が存在する場合、このクエリは問題なく実行されます。取引先責任者がいない場合でもQueryExceptionはスローされません。Salesforceでは、子関係クエリが結果を返さない場合は単に空のリストが返されます。

□ accounts[0].contactsは空です。
これは正解です。サブクエリ (SELECT Id, Name FROM Contacts) は関連する取引先責任者のレコードを取得しようとしますが、NoContacts という名前の取引先に関連する取引先責任者がいないため、このリストは空になります(つまり、要素が0個です)。しかし、これはnullではなく、空のリスト(List<Contact>)です。

□ accounts[0].contactsはNullです。
これは不正解です。SalesforceのSOQLクエリで子関係をクエリすると、その子関係が空であったとしても、nullではなく空のリストが返されます。ですので、このリストはnullではなく、上記の通り空です。

□ accounts[0].contactsは無効です。
これは不正解です。accounts[0].contacts が無効という状態は存在しません。Salesforceでは、このようなクエリ結果は正しく扱われ、結果がない場合は単に空のリストが返されます。無効という状態は特にこのコンテキストには当てはまりません。

次の問題へ

前の問題へ

1問目から復習する

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

コメント

コメントする

目次