Illegal assignment from SObject to ContactFetching String, Id from Map - Illegal Assignment Id to Field / ObjectError: Compile Error: Illegal assignment from String to BooleanError: List has no rows for assignment to SObjectError on Test Class - System.QueryException: List has no rows for assignment to SObjectRemote action problemDML requires SObject or SObject list type error“Illegal assignment from List to List”Test Class Fail: Batch Class: System.QueryException: List has no rows for assignment to SObjectMapping to a user'List has no rows for assignment to SObject' Mystery
Game artist computer workstation set-up – is this overkill?
I want to write a blog post building upon someone else's paper, how can I properly cite/credit them?
How does "politician" work as a job/career?
Searching for a sentence that I only know part of it using Google's operators
While drilling into kitchen wall, hit a wire - any advice?
How to increase row height of a table and vertically "align middle"?
Appropriate age to involve kids in life changing decisions
My C Drive is full without reason
LiOH hydrolysis of methyl 2,2-dimethoxyacetate not giving product?
If an attacker targets a creature with the Sanctuary spell cast on them, but fails the Wisdom save, can they choose not to attack anyone else?
Employee is self-centered and affects the team negatively
A♭ major 9th chord in Bach is unexpectedly dissonant/jazzy
What is the meaning of "matter" in physics?
Magical Modulo Squares
Where do 5 or more U.S. counties meet in a single point?
What's weird about Proto-Indo-European Stops?
What calendar would the Saturn nation use?
Bash prompt takes only the first word of a hostname before the dot
What did Varys actually mean?
call() a function within its own context
What does “two-bit (jerk)” mean?
My parents are Afghan
If quadruped mammals evolve to become bipedal will their breast or nipple change position?
A problem with Hebrew and English underlined text
Illegal assignment from SObject to Contact
Fetching String, Id from Map - Illegal Assignment Id to Field / ObjectError: Compile Error: Illegal assignment from String to BooleanError: List has no rows for assignment to SObjectError on Test Class - System.QueryException: List has no rows for assignment to SObjectRemote action problemDML requires SObject or SObject list type error“Illegal assignment from List to List”Test Class Fail: Batch Class: System.QueryException: List has no rows for assignment to SObjectMapping to a user'List has no rows for assignment to SObject' Mystery
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I am getting the following error:
Illegal assignment from SObject to Contact
I created a class called DynamicSObjectUpdater that I use to consolidate DML statements in my triggers. Basically you just call the class getSObject
and it appends the SObject to a Map called sorToUpdate
and then returns the SObject.
In one of my classes, I am calling the Class and its saying the following code is an illegal assignment from SObject to Contact.
Contact conToUpdate = sObjectUpdater.getSObject(con.Id);
I am not sure what I am missing here to make this work.
public with sharing class DyanmicSObjectUpdater
Map<SObjectType, Map<Id, sObject>> sorToUpdate = new Map<SObjectType, Map<Id, sObject>>();
public SObject getSObject(ID sObjectID)
SObjectType sot = sObjectID.getSobjectType();
if(!sorToUpdate.containsKey(sot))
sorToUpdate.put(sot, new Map<Id, SObject>());
SObject targetSObject = sorToUpdate.get(sot).get(sObjectID);
if(targetSObject == null)
targetSObject = sObjectID.getSobjectType().newSobject(sObjectID);
sorToUpdate.get(sot).put(sObjectID, targetSObject);
return targetSObject;
public void updateSObjects()
List<SObject> sObjectsToUpdate = new List<SObject>();
if(sObjectsToUpdate.size() > 0)
for(SObjectType sorType: sorToUpdate.keySet())
sObjectsToUpdate.addAll(sorToUpdate.get(sorType).values());
if(sObjectsToUpdate.size()>0) update sObjectsToUpdate;
apex
add a comment |
I am getting the following error:
Illegal assignment from SObject to Contact
I created a class called DynamicSObjectUpdater that I use to consolidate DML statements in my triggers. Basically you just call the class getSObject
and it appends the SObject to a Map called sorToUpdate
and then returns the SObject.
In one of my classes, I am calling the Class and its saying the following code is an illegal assignment from SObject to Contact.
Contact conToUpdate = sObjectUpdater.getSObject(con.Id);
I am not sure what I am missing here to make this work.
public with sharing class DyanmicSObjectUpdater
Map<SObjectType, Map<Id, sObject>> sorToUpdate = new Map<SObjectType, Map<Id, sObject>>();
public SObject getSObject(ID sObjectID)
SObjectType sot = sObjectID.getSobjectType();
if(!sorToUpdate.containsKey(sot))
sorToUpdate.put(sot, new Map<Id, SObject>());
SObject targetSObject = sorToUpdate.get(sot).get(sObjectID);
if(targetSObject == null)
targetSObject = sObjectID.getSobjectType().newSobject(sObjectID);
sorToUpdate.get(sot).put(sObjectID, targetSObject);
return targetSObject;
public void updateSObjects()
List<SObject> sObjectsToUpdate = new List<SObject>();
if(sObjectsToUpdate.size() > 0)
for(SObjectType sorType: sorToUpdate.keySet())
sObjectsToUpdate.addAll(sorToUpdate.get(sorType).values());
if(sObjectsToUpdate.size()>0) update sObjectsToUpdate;
apex
add a comment |
I am getting the following error:
Illegal assignment from SObject to Contact
I created a class called DynamicSObjectUpdater that I use to consolidate DML statements in my triggers. Basically you just call the class getSObject
and it appends the SObject to a Map called sorToUpdate
and then returns the SObject.
In one of my classes, I am calling the Class and its saying the following code is an illegal assignment from SObject to Contact.
Contact conToUpdate = sObjectUpdater.getSObject(con.Id);
I am not sure what I am missing here to make this work.
public with sharing class DyanmicSObjectUpdater
Map<SObjectType, Map<Id, sObject>> sorToUpdate = new Map<SObjectType, Map<Id, sObject>>();
public SObject getSObject(ID sObjectID)
SObjectType sot = sObjectID.getSobjectType();
if(!sorToUpdate.containsKey(sot))
sorToUpdate.put(sot, new Map<Id, SObject>());
SObject targetSObject = sorToUpdate.get(sot).get(sObjectID);
if(targetSObject == null)
targetSObject = sObjectID.getSobjectType().newSobject(sObjectID);
sorToUpdate.get(sot).put(sObjectID, targetSObject);
return targetSObject;
public void updateSObjects()
List<SObject> sObjectsToUpdate = new List<SObject>();
if(sObjectsToUpdate.size() > 0)
for(SObjectType sorType: sorToUpdate.keySet())
sObjectsToUpdate.addAll(sorToUpdate.get(sorType).values());
if(sObjectsToUpdate.size()>0) update sObjectsToUpdate;
apex
I am getting the following error:
Illegal assignment from SObject to Contact
I created a class called DynamicSObjectUpdater that I use to consolidate DML statements in my triggers. Basically you just call the class getSObject
and it appends the SObject to a Map called sorToUpdate
and then returns the SObject.
In one of my classes, I am calling the Class and its saying the following code is an illegal assignment from SObject to Contact.
Contact conToUpdate = sObjectUpdater.getSObject(con.Id);
I am not sure what I am missing here to make this work.
public with sharing class DyanmicSObjectUpdater
Map<SObjectType, Map<Id, sObject>> sorToUpdate = new Map<SObjectType, Map<Id, sObject>>();
public SObject getSObject(ID sObjectID)
SObjectType sot = sObjectID.getSobjectType();
if(!sorToUpdate.containsKey(sot))
sorToUpdate.put(sot, new Map<Id, SObject>());
SObject targetSObject = sorToUpdate.get(sot).get(sObjectID);
if(targetSObject == null)
targetSObject = sObjectID.getSobjectType().newSobject(sObjectID);
sorToUpdate.get(sot).put(sObjectID, targetSObject);
return targetSObject;
public void updateSObjects()
List<SObject> sObjectsToUpdate = new List<SObject>();
if(sObjectsToUpdate.size() > 0)
for(SObjectType sorType: sorToUpdate.keySet())
sObjectsToUpdate.addAll(sorToUpdate.get(sorType).values());
if(sObjectsToUpdate.size()>0) update sObjectsToUpdate;
apex
apex
edited Apr 28 at 19:07
Robs
2,728743
2,728743
asked Apr 28 at 19:03
Matthew MetrosMatthew Metros
967
967
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
You need to cast the return value.
Contact conToUpdate = (Contact)sObjectUpdater.getSObject(con.Id);
More generally, you cannot directly assign a value typed at compile time as a superclass (like sObject
) to a variable typed as a subclass (Contact
is a subclass of sObject
). You can perform a cast to tell the compiler that the sObject
instance you're getting back from getSObject()
is actually a Contact
; if at runtime this is not the case (i.e., you get back an Account
or something else that isn't a Contact
), you will receive an exception.
You might find the implementation of the Unit of Work pattern in fflib
interesting as you're building this type of generic/abstracted DML code.
Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.
– Matthew Metros
Apr 28 at 19:57
@MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.
– David Reed♦
Apr 28 at 20:09
add a comment |
You need to cast the result
Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "459"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f260343%2fillegal-assignment-from-sobject-to-contact%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You need to cast the return value.
Contact conToUpdate = (Contact)sObjectUpdater.getSObject(con.Id);
More generally, you cannot directly assign a value typed at compile time as a superclass (like sObject
) to a variable typed as a subclass (Contact
is a subclass of sObject
). You can perform a cast to tell the compiler that the sObject
instance you're getting back from getSObject()
is actually a Contact
; if at runtime this is not the case (i.e., you get back an Account
or something else that isn't a Contact
), you will receive an exception.
You might find the implementation of the Unit of Work pattern in fflib
interesting as you're building this type of generic/abstracted DML code.
Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.
– Matthew Metros
Apr 28 at 19:57
@MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.
– David Reed♦
Apr 28 at 20:09
add a comment |
You need to cast the return value.
Contact conToUpdate = (Contact)sObjectUpdater.getSObject(con.Id);
More generally, you cannot directly assign a value typed at compile time as a superclass (like sObject
) to a variable typed as a subclass (Contact
is a subclass of sObject
). You can perform a cast to tell the compiler that the sObject
instance you're getting back from getSObject()
is actually a Contact
; if at runtime this is not the case (i.e., you get back an Account
or something else that isn't a Contact
), you will receive an exception.
You might find the implementation of the Unit of Work pattern in fflib
interesting as you're building this type of generic/abstracted DML code.
Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.
– Matthew Metros
Apr 28 at 19:57
@MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.
– David Reed♦
Apr 28 at 20:09
add a comment |
You need to cast the return value.
Contact conToUpdate = (Contact)sObjectUpdater.getSObject(con.Id);
More generally, you cannot directly assign a value typed at compile time as a superclass (like sObject
) to a variable typed as a subclass (Contact
is a subclass of sObject
). You can perform a cast to tell the compiler that the sObject
instance you're getting back from getSObject()
is actually a Contact
; if at runtime this is not the case (i.e., you get back an Account
or something else that isn't a Contact
), you will receive an exception.
You might find the implementation of the Unit of Work pattern in fflib
interesting as you're building this type of generic/abstracted DML code.
You need to cast the return value.
Contact conToUpdate = (Contact)sObjectUpdater.getSObject(con.Id);
More generally, you cannot directly assign a value typed at compile time as a superclass (like sObject
) to a variable typed as a subclass (Contact
is a subclass of sObject
). You can perform a cast to tell the compiler that the sObject
instance you're getting back from getSObject()
is actually a Contact
; if at runtime this is not the case (i.e., you get back an Account
or something else that isn't a Contact
), you will receive an exception.
You might find the implementation of the Unit of Work pattern in fflib
interesting as you're building this type of generic/abstracted DML code.
answered Apr 28 at 19:05
David Reed♦David Reed
41.5k82463
41.5k82463
Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.
– Matthew Metros
Apr 28 at 19:57
@MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.
– David Reed♦
Apr 28 at 20:09
add a comment |
Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.
– Matthew Metros
Apr 28 at 19:57
@MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.
– David Reed♦
Apr 28 at 20:09
Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.
– Matthew Metros
Apr 28 at 19:57
Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.
– Matthew Metros
Apr 28 at 19:57
@MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.
– David Reed♦
Apr 28 at 20:09
@MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.
– David Reed♦
Apr 28 at 20:09
add a comment |
You need to cast the result
Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);
add a comment |
You need to cast the result
Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);
add a comment |
You need to cast the result
Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);
You need to cast the result
Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);
answered Apr 28 at 19:05
RobsRobs
2,728743
2,728743
add a comment |
add a comment |
Thanks for contributing an answer to Salesforce Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f260343%2fillegal-assignment-from-sobject-to-contact%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown