我的情况是我的列名称可以是genesis__prod__c / docgen__prod__c / lnd__prod__c等类型,具体取决于使用我的解决方案包的包。这里创世纪,docgen和使用我的解决方案的不同产品包。
我的解决方案需要从那里的产品中的相应sObjects中获取任何这些(genesis__prod__c / docgen__prod__c / lnd__prod__c)字段。
我想构造一个通用查询,它将使用通配符省略命名空间,并且只在指定的sObject中查找prod__c。有了这个,我不必在查询中硬编码任何命名空间。
例如,我不想像这样形成我的查询
String query = 'select Id,Name,docgen__CL_Product__c from '+ sObjectType + ' where id= \'' + appId + '\'';
List<sObject> runtimeDeterminedObject = Database.query(query+' LIMIT 1');
这里我特别提到了要从运行时解析的sObject名称docgen__CL_Product__c
获取的sObjectType
名称w.r.t和appId
如何构建查询,而不必在docgen,genesis
之前提供名称空间prod__c
。我不想为每个可以使用我的包的产品写if-else
。
答案 0 :(得分:0)
为什么不让命名空间成为根据某些条件附加到查询的变量?不完全是您正在寻找的内容,但我假设有某种方法可以确定环境,然后根据您可以动态调整查询:
String env = someCondition ? 'genesis__' : 'docgen__';
String query = 'select Id, Name, ' + env + 'CL_Product__c from '+ sObjectType + ' where id= \'' + appId + '\'';
List<sObject> runtimeDeterminedObject = Database.query(query+' LIMIT 1');