Salesforce Without Sharingの使い方のサンプル

環境
Salesforce Apex

構文
現在のユーザーに適用されている共有ルールを強制実行されないようにするには、
クラスの宣言時に without sharing キーワードを使用します。
public without sharing class noSharing {
// 処理コード
}

使用例
クラスが with sharing を使用して宣言された別のクラスからコールされた場合、共有ルールの強制実行を明示的にオフにできます。
without sharingはシステムモードで実行するため、共有ルールは適用されません。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public without sharing class SharingSample {
List<Account> accList {get; set;}
public SharingSample(){
}
public List<Account> getAccList(){
List<Account> result;
result = [SELECT Id,Name,Owner.Name
FROM Account
ORDER BY Owner.Name ASC
];
return result;
}
}
public without sharing class SharingSample { List<Account> accList {get; set;} public SharingSample(){ } public List<Account> getAccList(){ List<Account> result; result = [SELECT Id,Name,Owner.Name FROM Account ORDER BY Owner.Name ASC ]; return result; } }
public without sharing class SharingSample {
 
    List<Account> accList {get; set;}
    
    public SharingSample(){
    }
    
    public List<Account> getAccList(){
        
        List<Account> result;
        
        result = [SELECT Id,Name,Owner.Name
                  FROM Account
                  ORDER BY Owner.Name ASC
                 ];
        
        return result;   
    }
}

Visualforce画面

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<apex:page controller="SharingSample">
<apex:pageBlock >
件数:{!accList.size}
<apex:pageBlockTable value="{!accList}" var="acc">
<apex:column value="{!acc.id}"/>
<apex:column value="{!acc.Name}"/>
<apex:column value="{!acc.Owner.Name}"/>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:page>
<apex:page controller="SharingSample"> <apex:pageBlock > 件数:{!accList.size}件 <apex:pageBlockTable value="{!accList}" var="acc"> <apex:column value="{!acc.id}"/> <apex:column value="{!acc.Name}"/> <apex:column value="{!acc.Owner.Name}"/> </apex:pageBlockTable> </apex:pageBlock> </apex:page>
<apex:page controller="SharingSample">
    <apex:pageBlock >
        件数:{!accList.size}件
        <apex:pageBlockTable value="{!accList}" var="acc">
            <apex:column value="{!acc.id}"/>
            <apex:column value="{!acc.Name}"/>
            <apex:column value="{!acc.Owner.Name}"/>
        </apex:pageBlockTable>
    </apex:pageBlock>
</apex:page>

 

IT

Posted by arkgame