Newer Version Available
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 に更新します。
1swfobject.registerObject("clippy.getSObjectTypeFromIDEx", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public class MyDynamicSolution {
18 @future
19 public static void updateOwner(List<ID> objIds, ID newOwnerId) {
20 // Validate input
21 System.assert(objIds != null);
22 System.assert(objIds.size() > 0);
23 System.assert(newOwnerId != null);
24
25 // Get the sObject token from the first ID
26 // (the List contains IDs of sObjects of the same type).
27 Schema.SObjectType token = objIds[0].getSObjectType();
28
29 // Using the token, do a describe
30 // and construct a query dynamically.
31 Schema.DescribeSObjectResult dr = token.getDescribe();
32 String queryString = 'SELECT ownerId FROM ' + dr.getName() +
33 ' WHERE ';
34 for(ID objId : objIds) {
35 queryString += 'Id=\'' + objId + '\' OR ';
36 }
37 // Remove the last ' OR'
38 queryString = queryString.subString(0, queryString.length() - 4);
39
40 sObject[] objDBList = Database.query(queryString);
41 System.assert(objDBList.size() > 0);
42
43 // Update the owner ID on the sObjects
44 for(Integer i=0;i<objDBList.size();i++) {
45 objDBList[i].put('ownerId', newOwnerId);
46 }
47 Database.SaveResult[] srList = Database.update(objDBList, false);
48 for(Database.SaveResult sr : srList) {
49 if (sr.isSuccess()) {
50 System.debug('Updated owner ID successfully for ' +
51 dr.getName() + ' ID ' + sr.getId());
52 }
53 else {
54 System.debug('Updating ' + dr.getName() + ' returned the following errors.');
55 for(Database.Error e : sr.getErrors()) {
56 System.debug(e.getMessage());
57 }
58 }
59 }
60 }
61}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 メソッドと類似しています。
例
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) を示します。
戻り値
型: 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());