見出し画像

[Salesforce][Apexコード付き]特定のオブジェクトの項目をカンマ区切りの文字列で取得する

SalesforceSOQLには「SELECT *」みたいに全項目を取得するクエリがありません。

Apexクラスでレコードをコピーする処理を実装しているけど、SELECTに含んでいる項目しかコピーしてくれないので項目を増やす都度Apexクラスを変更しないといけない!

そんな悩みを解決するためのメソッド。
メタデータから全項目をカンマ区切りで取得します。あとは動的SOQLでSELECTしてください。

public with sharing class Util{
   static static public String getAllFields(String obj){
       String strFields='';
       Schema.SObjectType sobjType = Schema.getGlobalDescribe().get(obj);
       Map<String, Schema.SObjectField> fmap = sobjType.getDescribe().fields.getMap();
       for (String fieldKey : fmap.keySet()) {
           Schema.SObjectField f = fmap.get(fieldKey);
           if(strFields== ''){
               strFields = fieldKey;
           }else{
               strFields +=  ',' + fieldKey;
           }
       }
       return strFields;
   }
}

いいなと思ったら応援しよう!