0

私はこのコードを持っています:

Map<String, Account> Map_Account = new Map<String,Account>( [SELECT Name,Id
                                                            FROM Account 
                                                            WHERE name = 'Any Company Name']);

System.debug('------Task Map List------' + Map_Task_Frequency);
System.debug('*****Task Map*****' + Map_Task_Frequency.get('Any Company Name'));

Workbench では、次の結果が得られます。これは、Salesforce でのコーディング中にも得られます。

DEBUG|------Task Map List------{001g0000005PCWbAAO=Account:{Name=Any Company Name,
DEBUG|*****Task Map*****null

マップに明らかにアカウントがあるにもかかわらず、マップに文字列値を渡すと Null が返される理由を誰にもわかりますか?

助けていただければ幸いです。

ありがとう

4

2 に答える 2

1

問題は、マップのキーが ID であり、文字列ではないことです。最初のデバッグ メッセージから確認できます。

于 2013-08-23T14:33:11.083 に答える
0

残念ながら、Pavelが説明したユースケースは完全に真実です http://www.salesforce.com/us/developer/docs/apexcode/Content/langCon_apex_collections_maps_from_SObjects.htm

コードを思いどおりに動作させるには、コードを書き直す必要があります

Map<String, Account> Map_Task_Frequency = new Map<String,Account>();
for(Account a:  [SELECT Name,Id
                        FROM Account 
                        WHERE name = 'Any Company Name'] ){
  Map_Task_Frequency.put(a.Name, a);
}

System.debug('------Task Map List------' + Map_Task_Frequency);
System.debug('*****Task Map*****' + Map_Task_Frequency.get('Any Company Name'));

アカウント レコードを名前で参照し、それが WHERE 条件にあるため、あまり意味がありません。そのため、最後に読み込まれたアカウントを含むマップ上の値は 1 つだけになります。

于 2013-08-23T20:55:37.887 に答える