I have two lists that I am trying to combine to get one list of pets available for adoption (not really, but it's less boring than reality):

List<puppy> puppies = [SELECT Color, Name, Age, PetStores__r.Location, PetStores__r.Section FROM puppy];

List<kitten> kittens = [SELECT Color, Name, Age, PetStores__r.Location, PetStores__r.Section FROM kitten];

I'm running through all results in kitten and casting them to the superior puppy category. But I am getting stuck on figuring out how to add the PetStores fields to the puppy list.

for (kitten k : kittens){
    Puppy p = new Puppy();
    p.Color = k.Color;
    p.PetStores__r.Location = k.PetStores__r.Location; //This is where I am getting lost. Is this possible?

The above gives me a de-reference a null object error on the noted line. Is there something easy that I'm missing? Thanks!

p.PetStores__r.Location = k.PetStores__r.Location; 

PetStores__r needs to be populated first:

if(p.PetStores__r == null) {
  p.PetStores__r = new PetStore__c();
p.PetStores__r.Location = k.PetStores__r.Location;
  • If the goal is to save to the database, this would never work, right? – Adrian Larson May 3 '17 at 16:28
  • Thank you! This got me exactly what I needed - though I will not be saving anything, per Adrian's question. – mplax May 3 '17 at 16:31
  • @mplax Glad I could help! As Adrian set, remember you'd have to set the PetStores__c field to the correct PetStore__c Id if you did want to save to the database, but that's about it. – sfdcfox May 3 '17 at 16:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.