[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;
}
}