ソリューションパッケージを使用しているパッケージに応じて、私のカラム名がgenesis__prod__c/docgen__prod__c/lnd__prod__cなどのタイプになるシナリオがあります。ここでは起源、docgenと私のソリューションを使用して別の製品パッケージです。頂点にある動的なsoqlのカラム名にワイルドカードを使用する
私のソリューションでは、そこにある製品の各sObjectから、これらのフィールド(genesis__prod__c/docgen__prod__c/lnd__prod__c)のいずれかを取得する必要があります。
ワイルドカードを使用して名前空間を省略し、指定されたsObject内のprod__cだけを検索する一般的なクエリを作成します。これで、私はクエリ内の名前空間をハードコードする必要はありません。例えばのための
。、私は、実行時に解決のsObject名からsObjectType
WRT appId
をフェッチするdocgen__CL_Product__c
名を具体的に記載されているここでは、この
String query = 'select Id,Name,docgen__CL_Product__c from '+ sObjectType + ' where id= \'' + appId + '\'';
List<sObject> runtimeDeterminedObject = Database.query(query+' LIMIT 1');
のように私のクエリを形成する必要はありませんの前に名前空間docgen,genesis
を指定する必要がないクエリをどのように作成できますか?私のパッケージを利用できる製品ごとにif-else
と書いてはいけません。
これは、 elseアプローチ –