Id クラス
名前空間
例: ID からの sObject トークンの取得
このサンプルでは、getSObjectType メソッドを使用して ID から sObject トークンを取得する方法を示します。このサンプルの updateOwner メソッドは、sObject の ID のリストを受け取って ownerId 項目を更新します。このリストには、同じデータ型の sObject の ID が含まれます。2 番目のパラメーターは、新しい所有者 ID です。これは future メソッドであるため、sObject のデータ型をパラメーターとして受け取れません。そのため sObject の ID を受け取ります。このメソッドは、リストの 1 番目の ID から sObject トークンを取得し、オブジェクト名を取得する describe を実行して動的にクエリを構築します。次に、すべての sObject を照会し、所有者 ID 項目を新しい所有者 ID に更新します。
1public class MyDynamicSolution {
2 @future
3 public static void updateOwner(List<ID> objIds, ID newOwnerId) {
4 // Validate input
5 System.assert(objIds != null);
6 System.assert(objIds.size() > 0);
7 System.assert(newOwnerId != null);
8
9 // Get the sObject token from the first ID
10 // (the List contains IDs of sObjects of the same type).
11 Schema.SObjectType token = objIds[0].getSObjectType();
12
13 // Using the token, do a describe
14 // and construct a query dynamically.
15 Schema.DescribeSObjectResult dr = token.getDescribe();
16 String queryString = 'SELECT ownerId FROM ' + dr.getName() +
17 ' WHERE ';
18 for(ID objId : objIds) {
19 queryString += 'Id=\'' + objId + '\' OR ';
20 }
21 // Remove the last ' OR'
22 queryString = queryString.subString(0, queryString.length() - 4);
23
24 sObject[] objDBList = Database.query(queryString);
25 System.assert(objDBList.size() > 0);
26
27 // Update the owner ID on the sObjects
28 for(Integer i=0;i<objDBList.size();i++) {
29 objDBList[i].put('ownerId', newOwnerId);
30 }
31 Database.SaveResult[] srList = Database.update(objDBList, false);
32 for(Database.SaveResult sr : srList) {
33 if (sr.isSuccess()) {
34 System.debug('Updated owner ID successfully for ' +
35 dr.getName() + ' ID ' + sr.getId());
36 }
37 else {
38 System.debug('Updating ' + dr.getName() + ' returned the following errors.');
39 for(Database.Error e : sr.getErrors()) {
40 System.debug(e.getMessage());
41 }
42 }
43 }
44 }
45}Id のメソッド
Id のメソッドは次のとおりです。
addError(errorMsg)
署名
public Void addError(String errorMsg)
パラメーター
- errorMsg
- 型: String
- レコードにマークを付けるエラーメッセージです。
戻り値
型: Void
使用方法
このメソッドは、addError(errorMsg) sObject メソッドと類似しています。
例
1Trigger.new[0].Id.addError('bad');addError(errorMsg, escape)
署名
public Void addError(String errorMsg, Boolean escape)
パラメーター
戻り値
型: Void
使用方法
エスケープ文字は、\n、<、>、&、"、\、\u2028、\u2029、\u00a9 です。このため、HTML マークアップは表示されず、その代わりに、Salesforce ユーザーインターフェースにテキストとして表示されます。
例
1Trigger.new[0].Id.addError('Fix & resubmit', false);addError(exceptionError)
署名
public Void addError(Exception exceptionError)
パラメーター
- exceptionError
- 型: System.Exception
- レコードにマークを付けるエラーメッセージを含む例外オブジェクトまたはカスタム例外オブジェクトです。
戻り値
型: Void
使用方法
このメソッドは、addError(exceptionError) sObject メソッドと類似しています。
このメソッドは、指定されたエラーメッセージ内のすべての HTML マークアップをエスケープします。エスケープ文字は、\n、<、>、&、"、\、\u2028、\u2029、\u00a9 です。このため、HTML マークアップは表示されず、その代わりに、Salesforce ユーザーインターフェースにテキストとして表示されます。例
1public class MyException extends Exception{}
2
3Trigger.new[0].Id.addError(new myException('Invalid Id'));addError(exceptionError, escape)
署名
public Void addError(Exception exceptionError, Boolean escape)
パラメーター
- exceptionError
- 型: System.Exception
-
レコードにマークを付けるエラーメッセージを含む例外オブジェクトまたはカスタム例外オブジェクトです。
- escape
- 型: Boolean
-
カスタムエラーメッセージ内の HTML マークアップがエスケープされるか (true)、否か (false) を示します。このパラメーターは Lightning Experience と Salesforce モバイルアプリケーションの両方で無視され、HTML は常にエスケープされます。escape パラメーターは Salesforce Classic でのみ適用されます。
戻り値
型: Void
使用方法
エスケープ文字は、\n、<、>、&、"、\、\u2028、\u2029、\u00a9 です。このため、HTML マークアップは表示されず、その代わりに、Salesforce ユーザーインターフェースにテキストとして表示されます。
例
1public class MyException extends Exception{}
2
3account a = new account();
4a.addError(new MyException('Invalid Id & other issues'), false);getSObjectType()
署名
public Schema.SObjectType getSObjectType()
戻り値
使用方法
Describe についての詳細は、「Apex Describe Information について」を参照してください。
例
1account a = new account(name = 'account');
2insert a;
3Id myId = a.id;
4system.assertEquals(Schema.Account.SObjectType, myId.getSobjectType());to15()
署名
public static string to15()
戻り値
型: String
例
1String Id_15_char = '0D5B000001DVM9t';
2String Id_18_char = '0D5B000001DVM9tkAh';
3ID testId = Id_18_char;
4System.assertEquals(testId.to15(),Id_15_char);