"System.TypeException : 단일 작업에서 10 개 이상의 청크를 사용할 수 없습니다"라는 오류가 발생했습니다. 이 문제를 해결하는 방법을 알고 있다면 저를 안내해주십시오.System.TypeException : 단일 작업에서 10 개 이상의 청크를 가질 수 없습니다.
서로 다른 유형의 sObject를 sObject 목록에 함께 삽입하려고합니다. 목록은 10 행을 초과 할 수 없습니다. 여기
"System.TypeException : 단일 작업에서 10 개 이상의 청크를 사용할 수 없습니다"라는 오류가 발생했습니다. 이 문제를 해결하는 방법을 알고 있다면 저를 안내해주십시오.System.TypeException : 단일 작업에서 10 개 이상의 청크를 가질 수 없습니다.
서로 다른 유형의 sObject를 sObject 목록에 함께 삽입하려고합니다. 목록은 10 행을 초과 할 수 없습니다. 여기
이 게시물 :
https://developer.salesforce.com/forums/ForumsMain?id=906F000000090nUIAQ
는 다른 sObjects 수 있지만,이 덩어리 제한이 초과되도록 오브젝트의 순서가 아님을 시사한다. 즉, "1,1,1,2,2,2"에는 "1"에서 "2"로 전환되는 하나의 청크가 있습니다. "1,2,3,4,5,6"에는 요소 수가 동일하더라도 여섯 개의 청크가 있습니다. 객체 순서대로 정렬 된 객체를 목록에 배치하는 것이 좋습니다.
2 또는 3 행만으로 합리적인 테스트 케이스를 만들 수 있습니까?
이 문제에 대한 두 가지 설명이 있습니다 Jagular가 언급 한 바와 같이
시나리오 1과 그 해결책은
, 개체가 어떤 순서없이 흩어져 있지 않은지 확인하십시오. 예를 들어, A, B, A, B, A, B, A, B .... Salesforce는 sObject 유형을 10 번 이상 전환하는 데 고유 한 문제가 있습니다. 그들은이 스위칭 한계를 청킹 한도라고 부릅니다. 따라서이 하이브리드 목록에서 정렬 된 다음 DML로 전달하면 Salesforce가 훨씬 더 행복해졌습니다. 예를 들어. A, A, A, A, B, B, B, B ...이 경우 salesforce는 한 번만 전환하면됩니다 (즉, 모든 A 객체 -> 스위치 -> 모든 B 객체 읽기). 최대 청크 제한은 10입니다. 따라서 여기서는 안전합니다. listToUpdate.sort(); 업데이트 listToUpdate;
시나리오 2와 솔루션
우리가 명심해야 할 또 다른 점은 하이브리드 목록은 하나 개의 유형 사물의 수를 포함하는 경우, 우리는 TypeException으로 실행할 수 있다는 것입니다. 스크린 샷에서 언급했듯이 list에 A 유형의 오브젝트 1001 개와 B 유형의 오브젝트 1001 개가 들어 있으면 총 오브젝트는 2002와 같습니다. 허용되는 최대 청크는 10입니다. 간단한 수학을 수행하면 오브젝트의 수는 각 청크는 2002/10 = 200이 될 것입니다. 또한 Salesforce는 각 청크가 200 개 또는 200 개 이상의 객체를 포함하지 말아야하는 또 다른 관리자 제한을 시행합니다. 이 경우 코드를 입력 할 수있는 객체의 양을 미리 예측해야하며 매번 DML에 안전한 크기의 목록을 전달하는 코드를 작성해야합니다. 시나리오 3과 솔루션
시나리오 3과 솔루션
하이브리드 목록은 다음, 10 개 이상의 종류의 객체가 포함 된 경우 발생할 수세 번째 시나리오는 경우에도 목록의 크기의 경우 매우 작은 경우 Salesforce에서 다른 sObject를 읽으면 전환이 발생합니다.따라서이 경우 각 sObject 유형에 대해 별도의 목록을 할당 한 다음 DML에 전달해야합니다. 정점 트리거 또는 정점 클래스에서이를 수행하면 여러 DML이 컨텍스트에서 시작되므로 문제가 발생할 수 있습니다. 다른 컨텍스트에서 DML 작업을 위해 이러한 종류의 여러 sObject 목록을 전달하면 실제로 플랫폼에로드되는로드가 줄어 듭니다. 꼭짓점 트리거 또는 꼭대기 클래스보다는 일괄 처리 작업에서 이러한 종류의 논리를 수행하는 것이 좋습니다.
희망이 도움이됩니다.
나는 조건 2가 나의 상황이라는 것을 알고있다. 오우 !! – sechastain