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;








1















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;











share|improve this question






























    1















    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;











    share|improve this question


























      1












      1








      1








      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;











      share|improve this question
















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Apr 28 at 19:07









      Robs

      2,728743




      2,728743










      asked Apr 28 at 19:03









      Matthew MetrosMatthew Metros

      967




      967




















          2 Answers
          2






          active

          oldest

          votes


















          4














          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.






          share|improve this answer























          • 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


















          3














          You need to cast the result



          Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);





          share|improve this answer























            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
            );



            );













            draft saved

            draft discarded


















            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









            4














            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.






            share|improve this answer























            • 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















            4














            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.






            share|improve this answer























            • 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













            4












            4








            4







            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.






            share|improve this answer













            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.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Apr 28 at 19:05









            David ReedDavid 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

















            • 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













            3














            You need to cast the result



            Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);





            share|improve this answer



























              3














              You need to cast the result



              Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);





              share|improve this answer

























                3












                3








                3







                You need to cast the result



                Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);





                share|improve this answer













                You need to cast the result



                Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Apr 28 at 19:05









                RobsRobs

                2,728743




                2,728743



























                    draft saved

                    draft discarded
















































                    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.




                    draft saved


                    draft discarded














                    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





















































                    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







                    Popular posts from this blog

                    Wikipedia:Vital articles Мазмуну Biography - Өмүр баян Philosophy and psychology - Философия жана психология Religion - Дин Social sciences - Коомдук илимдер Language and literature - Тил жана адабият Science - Илим Technology - Технология Arts and recreation - Искусство жана эс алуу History and geography - Тарых жана география Навигация менюсу

                    Bruxelas-Capital Índice Historia | Composición | Situación lingüística | Clima | Cidades irmandadas | Notas | Véxase tamén | Menú de navegacióneO uso das linguas en Bruxelas e a situación do neerlandés"Rexión de Bruxelas Capital"o orixinalSitio da rexiónPáxina de Bruselas no sitio da Oficina de Promoción Turística de Valonia e BruxelasMapa Interactivo da Rexión de Bruxelas-CapitaleeWorldCat332144929079854441105155190212ID28008674080552-90000 0001 0666 3698n94104302ID540940339365017018237

                    What should I write in an apology letter, since I have decided not to join a company after accepting an offer letterShould I keep looking after accepting a job offer?What should I do when I've been verbally told I would get an offer letter, but still haven't gotten one after 4 weeks?Do I accept an offer from a company that I am not likely to join?New job hasn't confirmed starting date and I want to give current employer as much notice as possibleHow should I address my manager in my resignation letter?HR delayed background verification, now jobless as resignedNo email communication after accepting a formal written offer. How should I phrase the call?What should I do if after receiving a verbal offer letter I am informed that my written job offer is put on hold due to some internal issues?Should I inform the current employer that I am about to resign within 1-2 weeks since I have signed the offer letter and waiting for visa?What company will do, if I send their offer letter to another company